错误:缺少类型说明符 - 假设为int。 C ++不支持default int

时间:2011-08-24 01:49:58

标签: c++ c visual-studio templates

我写了一个使用模板的示例类。这很简单:

template <class T>
class myClass
{
public:

    // construction, destruction
    myClass();
    virtual ~myClass();
    class Object
    {
    public:
        Object() { m_pNext = NULL; m_pPrev = NULL; }
        ~Object() {}

        T        m_Value;

        Object*  m_pNext;
        Object*  m_pPrev;
    };

public:

    // accessor functions
    Object* Beginning();

private:

    Object* m_pBegin;
    Object* m_pEnd;
    INT m_nCount;

};

template <class T> 
inline myClass<T>::Object* myClass<T>::Beginning()
{ return m_pBegin; }


template <class T>
inline myClass<T>::myClass()
{

}

template <class T>
inline myClass<T>::~myClass()
{

}

我使用visual studio 2008,这是编译错误

错误C2143:语法错误:缺少';'在'*'之前...... 错误C4430:缺少类型说明符 - 假定为int。注意:C ++不支持default-int。

错误与此行相关联:

inline myClass<T>::Object* myClass<T>::Beginning()

有人能告诉我这段代码有什么问题吗?

感谢。

1 个答案:

答案 0 :(得分:10)

您需要更改

template <class T> 
inline myClass<T>::Object* myClass<T>::Beginning()
{ return m_pBegin; }

template <class T> 
inline typename myClass<T>::Object* myClass<T>::Beginning()
{ return m_pBegin; }

因为myClass<T>::Object是依赖类型。