[英]C++ forward class declaration
我有两个班级A和B,简单来说就是:
class A {
public:
void someMethod() {
//////
B* b = new B(); //Error
}
};
class B:A{
////
};
在父类中使用子类对象该怎么办?
在类B
完全定义之后,您需要定义成员函数,例如:
class A {
public:
void someMethod();
};
class B: A {
////
};
void A::someMethod()
{
//////
B* b = new B(); //Error
}
int main()
{
A a;
a.someMethod();
}
如果仅使用前向声明,但成员函数的定义在完全定义类B
之前,则它将不起作用,因为new B
要求完全定义B
您可以使用
B* b = new B();
仅当B
类的定义完全可见时。
定义B
后,移动功能的实现。
class A {
public:
// Declare only
void someMethod();
};
class B : A {
////
};
void A::someMethod() {
B* b = new B();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.