你能用C++解决这个循环依赖问题吗?

Fri*_*igo -1 c++ inheritance dependencies header class

有一个带有clone()函数的Object类可以抛出CloneNotSupportedException*并且声明为此类.CloneNotSupportedException派生自Exception,它派生自Object.

继承需要完整的类型,我们有两个,所以显然我们不能打破那里的循环依赖.成员指针和指针参数是不完整类型的内容,但这对于throw声明来说似乎是不够的,即使我们抛出指针也是如此.

类定义与实现分开,使用前向声明,指向各处.这还不够.

有没有办法打破这种依赖,或者这在C++中是不可能的?

Pup*_*ppy 7

跳过异常规范,它毫无价值.

class Object {
    virtual Object* clone() = 0;
    virtual ~Object() {}
};
Run Code Online (Sandbox Code Playgroud)

完成.

顺便说一句,你的设计听起来完全错误,我不能让自己不去评论它.

  • `clone`方法不应该是`const`吗? (3认同)