This вопрос несколько связан, но все еще не решает мою проблему. Рассмотрим два класса А и В:Передача указателя объекта другому классу в его конструкторе
class A{
public:
A(int id, B* coordinator);
virtual ~A();
B *coordinator;
}
class B{
public:
B(int id, int param2);
virtual ~B();
run();
}
void b::run(){
while(true){
A(1, this);
A(2, this);
//something else create which may create more A
}
}
int main(int argc, char* argv[]) {
B bObj(atoi(argv[1]), atoi(argv[2]));
}
В главном функции я создаю объект типа класса B называется BobJ. Конструктор вызовов B run() и B.run() переходит в бесконечный цикл. Где он создает несколько объектов A. Теперь я хочу передать указатель bObj на вновь созданные объекты класса A, чтобы они могли обращаться к другим общедоступным переменным и функциям bObj. Поэтому я передаю этот указатель при создании объектов A из B. И я объявил переменную класса координатор типа B * в классе A. Но я получаю это: Ошибка компилятора ->ISO C++ запрещает объявление «B» без типа.
Пожалуйста, помогите мне с этим. Я довольно новичок в C++.
Спасибо! Где я должен делать это заявление? – PHcoDer
Над декларацией 'class A'. См. Фрагмент в моем ответе – WhiZTiM
Спасибо, я сделал это. Но теперь я получаю ошибку везде, где я объявлял переменные типа A. Подобно тому, как есть вектор в B, который содержит экземпляры A, созданные в B. Когда я создаю вектор allAs ;. Я получаю ошибку, поскольку «аргумент шаблона1 недействителен». Я инициализирую B *, переданный в список инициализаторов конструкторов A. – PHcoDer