1

我一直在努力确保我理解 C++ 模板的语法,我想我已经到了最后一种情况。如果我有一个模板类,它有一个模板方法(与类的模板参数无关)作为成员,我可以在类定义之外定义该方法吗?如果是这样,语法是什么?

如果模板化方法是在模板化类定义中定义的,那么一切都很好。但是为了在类外定义方法,我尝试了很多关键字和尖括号的组合,但我总是遇到编译器错误(Visual Studio 2012)。

这是问题,归结为:

template <typename T>
class TestClass
{
    public:
        // ctor
        TestClass(T classtype) {m_classtype = classtype;}

        // The declaration/definition below is fine.
        template <typename U> void MethodOk(U param) {printf("Classtype size: %d.  Method parameter size: %d\n", sizeof(m_classtype), sizeof(param));}

        // The declaration below is fine, but how do I define the method?
        template <typename U> void MethodProblem(U param); // What is the syntax for defining this outside the class definition?

    private:
        T m_classtype;
};
4

2 回答 2

5
template<typename T>
template<typename U>
void TestClass<T>::MethodProblem(U param)
{
    //...
}
于 2013-01-15T15:12:49.533 回答
1

只需将其视为嵌套模板:

template <typename T>
template <typename U>
void TestClass<T>::MethodProblem(U param)
{
}
于 2013-01-15T15:13:27.357 回答