模板类成员函数之间的循环依赖关系
Cyclic dependency between template class member functions
给定两个模板类,每个模板类都有引用其他类中成员函数的成员函数,如何做到这一点?如果有的话。通过使用正向声明来允许循环依赖关系,意味着该定义不可用于引用的成员函数。因此,出现了一个关于未定义类型的隐式实例化的错误。不能将成员函数的定义推送到cpp文件中,包括完整的类定义而不是前向声明,因为它必须存在于标头中,以便在使用/调用时允许编译器实例化。
template<typename T>
class A {
void foo(B &b) { b.bar(); };
void bar() {};
}
template<typename T>
class B {
void foo(A &a) { a.bar(); };
void bar() {};
}
现在我知道第一个响应将是"更改代码",但我正在尝试一些东西,这是我能看到的使其工作的唯一方法。因此,我很感兴趣的是,在C++中,以上是否可能。非常感谢!
在定义另一个模板之前先声明一个模板:
template <typename> class B;
template <typename T> class A {
inline void foo(B<T> &b);
inline void bar();
};
template <typename T> class B {
void foo(A<T> &a) { a.bar(); }
void bar() {}
};
template <typename T> void A<T>::foo(B<T> &b) { b.bar(); }
template <typename T> void A<T>::bar() {}
相关文章:
- C++GTKMM gui循环依赖关系
- 如何在头文件中声明类模板(由于循环依赖关系)
- 如何在具有循环依赖的类中dynamic_cast?
- C++模板方法中的循环依赖关系
- 修复循环依赖项 c++17 标头
- 涉及全局对象的循环依赖C++
- 循环依赖,在继承类的情况下使用覆盖方法
- Wt::D bo 中的循环依赖关系
- 在包含窗口标头时难以解决循环依赖关系问题
- 解决循环依赖关系 c++ 的想法
- C++循环依赖关系,未声明的标识符
- C++ 中的循环依赖关系问题
- 错误 C2512 视觉C++(并且不是循环依赖项)
- CMake 外部和内部静态库的循环依赖关系
- 正在从继承中解析循环依赖项
- "std::shared_ptr"循环依赖关系是如何导致问题的
- 纯引用而不是weak_ptr来打破循环依赖关系
- "invalid use of incomplete type" .解决循环依赖关系
- 如何避免模板方法的循环依赖
- 循环依赖结构,使用前向声明时结构的错误重定义