在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;
}
想知道在这种情况下正确的语法应该是什么。
答案 0 :(得分:0)
template<typename T>
typename C1<T>::s C1<T>::GetS()
{
return m_sInt;
}
编译器的行为在关于具有依赖范围的嵌套模板的其他问题中进行了解释,例如: Nested templates with dependent scope或Dependent scope and nested templates