Да кажем, че имам 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