模板化方法相互依赖

时间:2021-03-18 22:34:37

标签: templates compilation dependencies

几天前我问到 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();
    }
};

是否有可能将类似这样的东西的实现分开,以便它可以实际编译?

1 个答案:

答案 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>;
相关问题