我一直在使用它,现在几乎准备从编译器中获取此错误:“类Servant不是模板类型” 我一直在阅读关于这个问题的其他论坛帖子,但我没有看到任何问题(我的自己,但编译器是的!),可以得到任何帮助? 提前thx,这是代码
static int aDefaultValue=0;
//class T;
template <typename T>
class Servant
{
public:
typedef typename T & ReferenceType;
typedef const typename T * ConstPtrType;
typedef typename T * ptrType;
Servant(){}
ptrType analizarQos(ptrType aMetodo= 0,int & aResult = aDefaultValue)
{
if (!aMetodo)
{
aResult=-1;
return aMetodo;
}
//check for timeout del metodo
//lleno el mensaje con la info
}
private:
~Servant(){}
//avoid copias
Servant(const Servant &);
const Servant & operator=(const Servant &);
};
答案 0 :(得分:1)
你需要
Servant(const Servant<T> &);
const Servant & operator=(const Servant<T> &);
用于禁止操作(至少对于不支持'inject-class-name'的编译器而言)。
您可能有类Servant
的前向声明,但未指定任何模板参数或模板参数的数量错误。
答案 1 :(得分:0)
Clang打印出来
/private/tmp/my.cpp:7:22: error: expected a qualified name after 'typename'
typedef typename T & ReferenceType;
^
/private/tmp/my.cpp:8:28: error: expected a qualified name after 'typename'
typedef const typename T * ConstPtrType;
^
/private/tmp/my.cpp:9:22: error: expected a qualified name after 'typename'
typedef typename T * ptrType;
^
3 errors generated.
我改为:
后编译的代码typedef T & ReferenceType;
typedef const T * ConstPtrType;
typedef T * ptrType;