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

Posted

技术标签:

【中文标题】错误:缺少类型说明符 - 假定为 int。 C++ 不支持默认 int【英文标题】:Error: missing type specifier - int assumed. C++ does not support default int 【发布时间】:2011-08-24 01:49:58 【问题描述】:

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

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()

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

谢谢。

【问题讨论】:

你可能不得不说typename myClass&lt;T&gt;::Object。但是,为什么不在定义中写那个 oneliner 呢? 老实说,我不明白你的问题。你的意思是为什么不在类定义中编写那些内联函数?如果是这样,我不知道有什么区别,请赐教。 区别是少了很多写法,函数会隐式声明inlineObject * Beginning() return m_Begin; 【参考方案1】:

你需要改变

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&lt;T&gt;::Object 是一个依赖类型。

【讨论】:

以上是关于错误:缺少类型说明符 - 假定为 int。 C++ 不支持默认 int的主要内容,如果未能解决你的问题,请参考以下文章

缺少类型说明符 - 声明静态成员后假定为 int 错误

缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int----;解决方法

error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int

error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int

声明Windows API结构(DCB)的对象 - 错误C4430:缺少类型说明符 - 假定为int

错误 C4430:缺少类型说明符 - 假定为 int?