C++继承循环依赖 我将一些C代码移植到C++中,并有以下问题,请参见下面的简化代码。我的文件系统类依赖于从文件系统类继承的目录类。这似乎是在C中工作,但不是在C++中。有没有一个简单的技巧来打破这个 class fileSystemItem{ private: Directory* parent; }; class Directory : public fileSystemItem{ };

C++继承循环依赖 我将一些C代码移植到C++中,并有以下问题,请参见下面的简化代码。我的文件系统类依赖于从文件系统类继承的目录类。这似乎是在C中工作,但不是在C++中。有没有一个简单的技巧来打破这个 class fileSystemItem{ private: Directory* parent; }; class Directory : public fileSystemItem{ };,c++,inheritance,C++,Inheritance,目录的转发声明: 注意资本化的一致性 目录的转发声明: 注意资本化的一致性

目录的转发声明:

注意资本化的一致性

目录的转发声明:


注意资本化的一致性 只需添加行类目录;在定义fileSystemItem之前。还请注意,在您的示例中,目录的拼写与目录本身定义中的大小写及其在fileSystemItem定义中的使用不同。这是行不通的,因为标识符就像在C中一样是区分大小写的

生成的声明应如下所示:

class Directory;
class fileSystemItem{
    private:
    Directory* parent;
};

class Directory: public fileSystemItem{

};

问题是,在C++中,每种类型都必须在你引用之前声明。为了解决这个问题,您可以执行所谓的前向声明,在子类第一次出现在基类中之前声明子类

只需添加行类目录;在定义fileSystemItem之前。还请注意,在您的示例中,目录的拼写与目录本身定义中的大小写及其在fileSystemItem定义中的使用不同。这是行不通的,因为标识符就像在C中一样是区分大小写的

生成的声明应如下所示:

class Directory;
class fileSystemItem{
    private:
    Directory* parent;
};

class Directory: public fileSystemItem{

};