Ошибка: отсутствует указатель типа - предполагается int.C ++ не поддерживает int по умолчанию - PullRequest
2 голосов
/ 24 августа 2011

Я написал пример класса с использованием шаблона.это довольно просто:

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 Ответ

10 голосов
/ 24 августа 2011

Вам нужно изменить

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 является зависимым типом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...