我尝试实现一个接收参数类型为int和string的函数。所以我想到了模板。
头文件
template <typename T>
class SymbolTable {
public:
void run(string filename);
void insert(T value);
}
实现文件
template <typename T>
void SymbolTable::run(string filename)
{
cout << "success" << endl;
}
// Haven't implement "insert" yet!
编译器报告错误:
name followed by '::' must be a class or namespace name
如果我删除模板,它工作正常。任何建议吗?
这只是一个基本的语法错误。你的方法定义应该是:
template <typename T>
void SymbolTable<T>::run(string filename)
{
cout << "success" << endl;
}
如果你需要它,这里有一些语法正确的例子,关于如何在c++中使用不同的模板变体。