我想要做:

typedef MyTemplateClass<Type01, Type02> TClass;
TClass t;
TClass::InnerClass i;
i.test();

我认为解决方案可能是:
template <typename A, typename B>
class MyTemplateClass
{
public:
    class InnerClass
    {
        //here I can do stuff with A and B
        A test() { return 0; }
    };

    friend class InnerClass;
};

但我想在头文件底部的单独* .inl文件中包含ma模板

如何在其他文件中定义这种行为?

当我刚做
//file.inl
class InnerClass
{
    //here I can do stuff with A and B
    A test() { return 0; }
};

A和B未定义。


template <typename A, typename B>
class InnerClass
{
...
};

使我的方法模板独立于MyTemplateClass类型...

再用一句话:
如何通过提供其他文件使MyTemplateClass的InnerClass
TClass::InnerClass i;
i.test();

行为?

最佳答案

你不能简而言之。模板必须在实例化之前完全定义-这意味着无论您做什么,都必须在模板类中定义内部类。

关于c++ - 如何将模板类的内部类分离到其他文件中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6236799/

10-08 21:33