我写了一个使用模板的示例类。这很简单:
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()
有人能告诉我这段代码有什么问题吗?
感谢。
答案 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
是依赖类型。