Скажем, у меня есть 2 класса:
// a.h
#ifndef A_H
#define A_H
#include "b.h"
class A {
public: void a() {
B* b = new B(this);
}
}
#endif
// b.h
#ifndef B_H
#define B_H
#include "a.h"
class B {
public: B(A* a) {
// ...
}
}
#endif
Этот код вызовет ошибку A has not been declared
, потому что класс A ссылается на класс B, который, в свою очередь, ссылается на класс A, который еще не был объявлен в a.h.
Итак, как я могу передать экземпляр A в B?
#define
s,new B…
). - person Konrad Rudolph   schedule 25.04.2012#define
как ошибку? Альтернативой может быть#pragma once
, но это (хотя и широко поддерживается и имеет преимущества) не является стандартным, не так ли? Что было бы наилучшей практикой? - person Péter Török   schedule 25.04.2012A
иB
в качестве имен включаемых охранников… - person Konrad Rudolph   schedule 25.04.2012