![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
Compositum |
|
||||||||||||
![]() Senior developer ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 430 Регистрация: 6.1.2008 Где: Санкт-Петербург Репутация: нет Всего: 1 |
Доброго времени суток. Изучаю C++.
В MS Visual Studio 2012 создал пустой C++ проект. В группу "Source Files" добавил два файла: Файл Book.cpp:
Файл main.cpp:
Однако скомпилировать код не удаётся:
Если я класс Book перепишу, сделав все функции подставляемыми (inline), то количество ошибок значительно уменьшается:
Ошибки компиляции:
Но Book::booksCount - это статическая переменная... Хочешь-не хочешь, а определять её вне класса придётся. Если я закомментирую определение, то вылезают ошибки:
В чём проблема? Почему мне приходится переписывать функции как inline? Как этого избежать, если мне это не надо? И почему так и остаётся проблема со статическим полем? |
||||||||||||
|
|||||||||||||
feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 12 Всего: 45 |
Студия компилирует book.cpp в book.obj, а последний линкует с main.obj. Но в то же время Вы делаете что дублирует код из book.cpp. Переименуйте book.cpp в book.hpp или book.h... -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
Compositum |
|
|||
![]() Senior developer ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 430 Регистрация: 6.1.2008 Где: Санкт-Петербург Репутация: нет Всего: 1 |
Переименовал и подправил include, но это не помогло :( Добавлено через 6 минут и 48 секунд Может это поможет - выкладываю упакованный архив с "проектом" здесь. |
|||
|
||||
Compositum |
|
|||
![]() Senior developer ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 430 Регистрация: 6.1.2008 Где: Санкт-Петербург Репутация: нет Всего: 1 |
Проблема решена. Если кому будет интересно поясняю: Как указывалось выше, сначала я вместо заголовочного файла через include подключил cpp файл, а этого делать нельзя... Исправляя эту ошибку, я думал, что смены расширения с cpp на h и перетаскивание мышкой файла в группу Header Files будет достаточно, но оказалось что нет...
Сейчас сделал следующее: для файла Book.h свойству Included In Project поставил значение False - файл сразу исчез из проекта. Затем из контекстного меню добавил этот файл снова через Add Existing Item... После этого компиляция прошла успешно. Теперь всё заработало. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |