我想要做:
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/