错误:缺少类型说明符 - 假定为 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<T>::Object
。但是,为什么不在定义中写那个 oneliner 呢?
老实说,我不明白你的问题。你的意思是为什么不在类定义中编写那些内联函数?如果是这样,我不知道有什么区别,请赐教。
区别是少了很多写法,函数会隐式声明inline
:Object * 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<T>::Object
是一个依赖类型。
【讨论】:
以上是关于错误:缺少类型说明符 - 假定为 int。 C++ 不支持默认 int的主要内容,如果未能解决你的问题,请参考以下文章
缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int----;解决方法
error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int