Ошибка STL при преобразовании проекта VS 6 в VS2010 - PullRequest
2 голосов
/ 02 марта 2012

Я конвертирую проект Visual Studio 6 в Visual Studio 2010. В проекте активно используется STL. После конвертации компилятор выдает ошибку. Код и ошибка следующие.

#include <list>

namespace mySpace
{

template <class T>
class MyList : public std::list<T>
{
    public:
        typedef std::list<T>::allocator_type AllocatorType;
    }

Ошибка: Ошибка 2, ошибка C2146: синтаксическая ошибка: отсутствует ';' перед идентификатором 'AllocatorType' c: \ myProject \ mylist.h 39 1

Я могу нажать на текст «allocator_type» и нажать F12, и среда IDE приведет меня к определению «allocator_type» в списке.

Если я удалю ':: allocator_type', ошибка исчезнет.

Есть идеи, что вызвало бы это?

Ответы [ 2 ]

5 голосов
/ 02 марта 2012

должно быть

typedef typename std::list<T>::allocator_type AllocatorType;

Вы должны сказать, что компилятор allocator_type на самом деле является типом.

Кстати, наследование от контейнеров STL не очень хорошая практика, поскольку у них нет виртуальных деструкторов.

1 голос
/ 02 марта 2012

Изменить строку typedef следующим образом:

typedef typename std::list<T>::allocator_type AllocatorType;

, чтобы указать, что std::list<T>::allocator является типом.

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