几天前我问到 C++ 中常规类的相互依赖,得到的答复是将方法声明和实现分离到 .cpp 和 .h 文件中,以消除实现依赖。
现在的问题是如何仅使用模板化方法处理相同的相互依赖问题,据我所知/阅读,这些方法无法单独严格实现(不是会计显式实现,在我的情况下不起作用) .h 和 .cpp 文件之间。
例如:
class Test_0
{
public:
template<typename T>
static void Testing_0()
{
Test_1::Testing_1();
}
};
class Test_1
{
public:
template<typename T>
static void Testing_1()
{
Test_0::Testing_0();
}
};
是否有可能将类似这样的东西的实现分开,以便它可以实际编译?
答案 0 :(得分:0)
通常我们把依赖的代码放到另一个类/函数中,这两个就直接调用了。
但如果你真的需要,也有一个丑陋的解决方案:
template<typename B>
class Test_0_{
template<typename T>
static void Testing_0(){
B::Testing_1<T>();
}
}
template<template<typename>class At>
class Test_1_{
using A = At<Test_1_>;
template<typename T>
static void Testing_1(){
A::Testing_0<T>();
}
}
using Test_1 = Test_1_<Test_0_>;
using Test_0 = Test_0_<Test_1>;