模板类成员函数返回结构类型的正确语法是什么?

时间:2014-03-26 23:10:26

标签: stl

Storing C++ template function definitions in a .CPP file中,可以学习如何在.cpp中存储模板实现。但是,如果返回类型是在类中定义的结构,则无法执行此操作。参见

template<typename T>
class C1
{
public:
    struct s {
        int x;
    };

s GetS();

private:
s m_sInt;
};

在.cpp中,下面的代码会生成语法错误。

template<typename T>
C1<T>::s C1<T>::GetS()
{
    return m_sInt;
}

想知道在这种情况下正确的语法应该是什么。

1 个答案:

答案 0 :(得分:0)

template<typename T>
typename C1<T>::s C1<T>::GetS()
{
    return m_sInt;
}

编译器的行为在关于具有依赖范围的嵌套模板的其他问题中进行了解释,例如: Nested templates with dependent scopeDependent scope and nested templates