c++继承循环依赖
C++ inheritance loop dependency
我正在将一些c#代码移植到c++中,并遇到以下问题,请参阅下面的简化代码。我的文件系统类依赖于目录类,而目录类又继承了文件系统类。这似乎在C#
中有效,但在C++
中无效。有没有一个简单的技巧可以打破这个?
class fileSystemItem{
private:
Directory* parent;
};
class Directory : public fileSystemItem{
};
directory
的前向声明:
class Directory;
class FileSystemItem{
private:
Directory* parent;
};
class Directory : public FileSystemItem{
};
注意大小写一致。
问题是,在c++中,每个类型都必须在引用它之前声明。为了解决这个问题,可以执行所谓的前向声明,在子类首次出现在基类之前声明它。
只需在fileSystemItem
的定义之前添加class Directory;
行。还要注意,在您的示例中,在Directory
本身的定义及其在fileSystemItem
的定义中的使用中,您拼写Directory
的方式不同(就大小写而言)。这不起作用,因为标识符(就像c#中一样)是区分大小写的。
你的结果声明应该是这样的:
class Directory;
class fileSystemItem{
private:
Directory* parent;
};
class Directory: public fileSystemItem{
};
相关文章:
- C++GTKMM gui循环依赖关系
- 如何在头文件中声明类模板(由于循环依赖关系)
- 如何在具有循环依赖的类中dynamic_cast?
- C++模板方法中的循环依赖关系
- 修复循环依赖项 c++17 标头
- 涉及全局对象的循环依赖C++
- 循环依赖,在继承类的情况下使用覆盖方法
- Wt::D bo 中的循环依赖关系
- 在包含窗口标头时难以解决循环依赖关系问题
- 解决循环依赖关系 c++ 的想法
- C++循环依赖关系,未声明的标识符
- C++ 中的循环依赖关系问题
- 错误 C2512 视觉C++(并且不是循环依赖项)
- CMake 外部和内部静态库的循环依赖关系
- 正在从继承中解析循环依赖项
- "std::shared_ptr"循环依赖关系是如何导致问题的
- 循环包含依赖项/转发声明
- 纯引用而不是weak_ptr来打破循环依赖关系
- 如何在Visual Studio(C++11)中处理相互依赖/循环依赖
- 优化依赖循环openmp