循环携带的类依赖
Loop-carried class dependence
这是我的课程:
class Base {
public:
template <typename T>
static struct M {
T* open(string name, Dir *parent = NULL) {
if ( parent ) {
return parent->open_child(name);
} else {
auto ans = new T(name);
ans->open();
return ans;
}
}
};
virtual void open() =0;
};
class Dir : public Base {
public:
template <typename T>
T* open_child(string name);
void open();
};
class File : public Base {
public:
void open();
};
在这里,Dir
类要求Base
原型,Base
要求Dir
。前向声明不起作用:只有适合继承和方法调用的完整定义。假设我想将此代码放入 3 个头文件中:Base.h、Dir.h 和 File.h。如何重新制作代码以打破循环依赖关系?
#include <string>
class Dir;
class Base
{
public:
template <typename T>
struct M
{
T* open(std::string name, Dir* parent = nullptr);
};
};
class Dir : public Base
{
// Further definitions
};
// Implementation
template <typename T>
T* Base::M<T>::open(std::string name, Dir* parent)
{
// Implementation goes here...
}
相关文章:
- 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