Функция итератора кодирования для класса STL - PullRequest
0 голосов
/ 27 ноября 2010

Я работаю над кодом C ++ из "Ценообразования финансовых инструментов с использованием C ++" - книги по ценообразованию опционов с использованием C ++.Следующий код представляет собой небольшой фрагмент кода, лишенный многих деталей, который в основном пытается определить класс SimplePropertySet, который должен содержать имя и список.ошибки:

warning C4346: 'SimplePropertySet::iterator' : dependent name is not a type
    prefix with 'typename' to indicate a type
error C2143: syntax error : missing ';' before 'SimplePropertySet::Begin'
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int

Есть ли что-то глупое или основное, что я ошибаюсь или забываю здесь?Это синтаксическая ошибка?Я не могу положить на это свой палец.В книге, из которой взят этот фрагмент кода, говорится, что их код был скомпилирован в Visual Studio 6. Это какая-то проблема, связанная с версией?

Спасибо.

1 Ответ

2 голосов
/ 27 ноября 2010

Как указано компилятором, вы должны заменить:

template <class N, class V>
SimplePropertySet<N,V>::iterator SimplePropertySet<N,V>::Begin()

на:

template <class N, class V>
typename SimplePropertySet<N,V>::iterator SimplePropertySet<N,V>::Begin()

См. эту ссылку для объяснения зависимых имен.

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