c ++“类X不是模板类型”

时间:2013-08-09 12:58:13

标签: c++

我一直在使用它,现在几乎准备从编译器中获取此错误:“类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 &);
};

2 个答案:

答案 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;