0 / 0 / 0
Регистрация: 11.10.2011
Сообщений: 7
|
||||||||||||
1 | ||||||||||||
Не работает программа из книги Дейтела "Как программировать на с++"11.10.2011, 16:08. Показов 5946. Ответов 42
Метки нет (Все метки)
Помогите, пожалуйста, решить проблему. Программа из раздела книги "Отделение интерфейса от реализации". При компиляции(использую visual c++ 2008) возникают ошибки:
1) error LNK2019: unresolved external symbol "public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __thiscall GradeBook::getCourseName(void)" (?getCourseName@GradeBook@@QAE?AV?$ basic_string@DU?$char_traits@D@std@ @V?$allocator@D@2@@std@@XZ) referenced in function _main 2)error LNK2019: unresolved external symbol "public: __thiscall GradeBook::GradeBook(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (??0GradeBook@@QAE@V?$basic_string@ DU?$char_traits@D@std@@V?$allocator @D@2@@std@@@Z) referenced in function _main Текст программы следующий:
0
|
11.10.2011, 16:08 | |
Ответы с готовыми решениями:
42
Книги по С++ (что читать после книги Дейтела "Как программировать на С++") Где найти примеры задач из книги Дейтела по C++ Задача из книги Дейтел Как программировать на C++ Задача из книги Дейтелов Как программировать на C++ |
Заблокирован
|
|||||||||||
11.10.2011, 16:20 | 2 | ||||||||||
Harvy Dent, хоть убей не пойму в чём проблемма, всё компилится на ура, в программе ввёл единственную замену - зачем 2 раза подключать
- это на мой взгляд глупость и выглядит как множественное подключение. Вот так пишем и компилируем
1
|
|
11.10.2011, 16:23
#3
|
Не по теме: PS:Возможно указанные в топике ошибки и были обусловлены многократным подключением #include <iostream>. В проекте прикрепил РАБОЧИЙ проект - консоль приложил как подтверждение...
0
|
Делаю внезапно и красиво
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
|
||||||
11.10.2011, 16:30 | 4 | |||||
1
|
0 / 0 / 0
Регистрация: 11.10.2011
Сообщений: 7
|
|
11.10.2011, 16:38 [ТС] | 5 |
Большое спасибо =ЮрА= за помощь. Запустил твой проект и он на удивление заработал. А вот мой почему-то нет. Но это уже не так важно.
0
|
|
11.10.2011, 16:44
#6
|
0
|
Делаю внезапно и красиво
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
|
|
11.10.2011, 16:48 | 7 |
Я жирным выделю, вместо тэгов.)
// файл GradeBook.h // определение класса GradeBook #include <iostream> using namespace std; #include <string> using std::string; Добавлено через 38 секунд
0
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
|
11.10.2011, 16:52 | 8 |
скандалы, интриги, расследования.
какая разница, как это выглядит? А вот запись "using namespace std;" в заголовочном файле - это просто-таки насилие над идеей пространств имен. Я бы, наверное, подал на тебя в суд, если бы это имело бы смысл
1
|
Заблокирован
|
|
11.10.2011, 17:06 | 9 |
Не по теме: - поясни нормально на пальцах, учту в дальнейшем... В чём ошибка что буду юзать именно std? По моему 10 без этой строки using namespace std; вообще посылает PS:Я в виндозе пишу и юзаю студию(причём в данный момент 6-ую) Добавлено через 7 минут Nameless One, может всё-таки ответишь, а то как то обижаешь ни за что!Человеку я помог . Не по теме: Что строками using namespace std; ?
0
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
|
11.10.2011, 17:11 | 10 |
-=ЮрА=-, потому, что если использовать директиву "using namespace std;" в заголовочном файле, то засоряется глобальное пространство имен не только в этом самом заголовочном файле, но и в каждом файле, в котором этот заголовочный файл включается.
Эту директиву вообще не рекомендуется использовать, но если сильно хочется, то лучше ограничить ее действие только .cpp-файлами
1
|
0 / 0 / 0
Регистрация: 11.10.2011
Сообщений: 7
|
|
11.10.2011, 17:13 [ТС] | 11 |
Глупый вопрос. Как ты создавал этот проект? Мне кажется, что программа не работала именно из-за неправильного создания проекта, так как в книге об этом Дейтел не говорит.
0
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
|
11.10.2011, 17:17 | 12 |
0
|
0 / 0 / 0
Регистрация: 11.10.2011
Сообщений: 7
|
|
11.10.2011, 17:21 [ТС] | 13 |
По поводу using namespace std;. Не буду спорить, плохо или хорошо включать эту строку(так как пока не разбираюсь в этом), но без неё в Visual c++ 2008 у меня почему-то даже "Hello world!" не запускался.
0
|
|
11.10.2011, 17:24
#14
|
0
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
||||||
11.10.2011, 17:26 | 15 | |||||
Harvy Dent, hint: идентификатор cout расположен в пространстве имен std. Поэтому, чтобы его использовать в программе, тебе нужно указать прострванство имен:
это еще приемлимо, да, но нужно "вбивать" using namespace std; после подключения всех хедеров
0
|
0 / 0 / 0
Регистрация: 11.10.2011
Сообщений: 7
|
|
11.10.2011, 17:29 [ТС] | 16 |
-=ЮрА=-, как ты создавал этот проект? Мне кажется, что программа не работала именно из-за неправильного создания проекта, так как в книге об этом Дейтел не говорит.
0
|
Заблокирован
|
||||||
11.10.2011, 17:33 | 17 | |||||
- я уже об этом написал
Предполагаю что Nameless One, не использует студию и там подключение данного неймспейса критично, студия наоборот требует явного указания на использование функций std
Добавлено через 2 минуты - вечером посыл от 2008 выложу, хотя на 6-ке компилится норм
0
|
448 / 211 / 21
Регистрация: 07.10.2011
Сообщений: 462
|
|
11.10.2011, 17:33 | 18 |
-=ЮрА=-, в студии тоже не обязательно использовать строку using namespace std;
Просто, все что ты берешь оттуда, нужно предварять квалификатором std:: Т.е., вместо cout писать std::cout и приведенный Nameless One пример компилируется в студии на ура VS2010 - моя IDE
0
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
|
11.10.2011, 17:34 | 19 |
это критично везде и не зависит от используемого компилятора
и да, ошибки ТС, полученные в первом посте - это ошибки линковки, которые опять таки не связаны с пространством имен
0
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
|
11.10.2011, 17:37 | 20 |
Ну и в догонку, вот что на эту тему говорит Google Coding Style Guide
0
|
11.10.2011, 17:37 | |
11.10.2011, 17:37 | |
Помогаю со студенческими работами здесь
20
Подскажите книги, как программировать для GPU ? Как лучше читать книги и учиться программировать? Непонятный пример из книги Дейтел Как программировать на C++ Задача из книги Дейтела "Шахматная доска" Задача из книги Дейтела "Квадрат" Задача из книги Дейтела "Ромб" Пример из книги "Как программировать на С++" Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |