У меня есть небольшая проблема с C++, для которой я не знаю лучшего решения. У меня есть два класса A и B следующим образом:
class A {
int n;
B* b;
public:
A(int num): n(num) {
b = new B[n];
for (int i = 0; i < n; i++) {
b[i].setRef(this);
}
}
~A() {
delete [] b;
}
};
class B {
A* a;
public:
B() { }
B(A* aref) {
a = aref;
}
void setRef(A* aref) {
a = aref;
}
};
Я создаю объект класса A, передавая его конструктору количество объектов класса B, которые я хочу создать. Я хочу, чтобы каждый объект класса B содержал указатель на объект класса A, который его создает. Я думаю, что лучший способ сделать это — передать указатель на объект класса A в качестве аргумента конструктора объекту класса B.
Однако, поскольку я использую оператор new, вызывается конструктор без аргументов для класса B. В результате, единственное решение, которое я здесь вижу, это вызов метода setRef(A*) для каждого объекта класса B после его создания с помощью оператора new.
Есть ли лучшее решение/шаблон проектирования, которое было бы более применимо здесь? Будет ли использование размещения new для класса B лучшим решением?
Заранее спасибо за вашу помощь.