无论如何在C++中创建类之前声明一个类的对象?我问,因为我试图使用两个类,第一个需要在其中包含第二个类的实例,但第二个类还包含第一个类的实例.我意识到你可能认为我可能进入一个无限循环,但我实际上需要在第一个类之前创建第二个类的实例.
你做不到这样的事情:
class A { B b; }; class B { A a; };
最明显的问题是编译器不知道如何大做它需要制作A类,因为B的大小取决于A的大小!
但是,您可以这样做:
class B; // this is a "forward declaration" class A { B *b; }; class B { A a; };
将类B声明为前向声明允许您使用指向该类的指针(和引用),而无需具有完整的类定义.
您不能声明未定义类的实例,但可以声明指向一个的指针:
class A; // Declare that we have a class A without defining it yet. class B { public: A *itemA; }; class A { public: B *itemB; };