模板成员中的循环类依赖项
circular class dependency within template member
#ifndef CLASSB
#define CLASSB
#include "ClassA.h"
namespace name {
class ClassB
{
public:
static Handle conn();
};
}
#endif
-
#include "ClassB.h"
Handle name::ClassB::conn()
{
return getHandle(ClassA::it().str());
}
-
#ifndef CLASSA
#define CLASSA
#include "ClassB.h"
namespace name {
class ClassA
{
public:
template <typename T>
T myFunc(const std::string&)
{
auto tmp = ClassB::conn();
}
};
}
#endif
调用 ClassB::conn(( 会给出一个编译器错误,指出未声明类 ClassB。当我转发声明它时,我收到有关不完整类型的错误消息。
我无法将模板函数移动到我的.cpp文件,因为它是一个模板函数。那么,如何解决这个问题呢?
只需从类 B
的标头中删除#include "ClassA.h"
,它应该可以工作。但是您的代码似乎存在多个编译问题,因此很难说(缺少函数getHandle
,缺少it()
,缺少类型Handle
等(。
相关文章:
- 循环包含依赖项/转发声明
- 如何从同一个头文件中定义 2 个类,而一个类依赖于另一个类
- 如何 for 循环类变量数组
- 循环携带的类依赖
- 双向模板类依赖项 c++
- C++中的循环类型依赖项死锁
- c++ 中带有容器迭代器的循环类型依赖关系(GCC 失败,而 MSVC 正常)
- 模板成员中的循环类依赖项
- 循环类依赖关系,同时在C++中包含头文件
- Visual-Studio:高效处理循环库依赖
- OpenMP嵌套循环索引依赖项
- 在C++中,为什么循环目录依赖项不好
- 如何避免容器的序列化器和序列化器之间的循环模板依赖
- OpenMP:循环结转依赖
- 层次结构类依赖关系
- c++循环构造依赖:类的构造函数都有指向彼此的指针
- 循环数据依赖关系析构函数
- 类外部声明的c++类依赖类型
- 模板类依赖关系问题
- 当向前声明不可能尽可能优雅时,我如何解决循环类依赖