抱歉,我无法构建可以正确捕捉我的问题的问题。我的问题是这个。
我有一个这样的模板类。我无法理解如何准确定义 Get 函数。
template<class Data>
class Class
{
struct S
{
};
void Do();
S Get();
};
template<class Data>
void Class<Data>::Do()
{
}
template<class Data>
Class<Data>::S Class<Data>::Get()
{
}
我得到以下错误
1>error C2143: syntax error : missing ';' before 'Class<Data>::Get'
1>error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>fatal error C1903: unable to recover from previous error(s); stopping compilation
最佳答案
template<class Data>
Class<Data>::S Class<Data>::Get()
需要
template<class Data>
typename Class<Data>::S Class<Data>::Get()
因为S
是依赖类型。任何时候你有一个嵌套在模板中的类型,你需要使用关键字 typename
.例如,vector<int>
上的迭代器类型为 typename vector<int>::iterator
.
关于c++ - 如何让这个模板类编译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21508622/