Мышление в C ++ ошибка в исходном коде - PullRequest
0 голосов
/ 12 декабря 2010

Я читаю книгу «Мышление на С ++» (2-е издание, том 1), и у меня возникает проблема при попытке скомпилировать этот исходный код:

http://www.linuxtopia.org/online_books/programming_books/thinking_in_c++/Chapter16_015.html

Проблема, кажется, в этой строке:

Stack :: Link * p;

Как я прочитал в C ++: ошибка "... не является производной от типа ..." я должен добавить слово "typename" (или "class") перед ним.

Книга неправильная в этом примере или я что-то упустил?

Ответы [ 4 ]

3 голосов
/ 12 декабря 2010

Да, это неправильно. Вам нужен typename. См. имя и шаблон FAQ.

Stack является зависимым типом и Stack::List также является зависимым типом. Это допустимо в C ++ 0x, но запрещено в текущем C ++.

0 голосов
/ 19 июля 2011

Это может быть слишком поздно в день, но код должен скомпилироваться, если вы измените

Stack :: Link * p;

на

Link * p;

0 голосов
/ 12 декабря 2010

Это скорее случай, когда вы используете слишком старую книгу.Дата публикации этой книги - 2000, что означает, что большая часть фактического написания имела место, когда дорабатывался стандарт C ++ 98.

Текущая версия C ++ - C ++ 03 и C ++0x быстро приближается к стандартизации.

Я не думаю, что * C 1005 * требовалось в C ++ 98.

0 голосов
/ 12 декабря 2010

Книга неправильная в этом примере или я что-то упустил?

Я обнаружил, что разные компиляторы предъявляют разные требования к ключевому слову typename. MSVC довольно простителен, gpp более строг.

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