繁体   English   中英

C ++转发类声明

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM