Форум программистов, компьютерный форум CyberForum.ru

Как правильно инклюдить файлы исходных кодов? MSVS08 - C++

Восстановить пароль Регистрация
 
Hellko
6 / 6 / 1
Регистрация: 17.11.2012
Сообщений: 65
06.03.2013, 23:19     Как правильно инклюдить файлы исходных кодов? MSVS08 #1
Допустим мне нужно создать класс.
В Qt я делаю так: создаю файл class.h туда запихиваю описание класса и прототипы функций, а в файле class.cpp у меня прописано #include "class.h" и там описаны все нужные функции. Далее в файле main.cpp я делаю #include "class.cpp" и все работает прекрасно.

В Visual Studio 2008 Так не работает выдает ошибку error LNK2005: "public: __thiscall Payment::Payment(void)" (??0Payment@@QAE@XZ) already defined in Payment.obj etc
Где то почитал пишут что нужно в мейне инклюдить class.h, попробовал сделать так. Опять ошибко: error LNK2019: unresolved external symbol _WinMain@16 referenced in function ___tmainCRTStartup

Так как же все таки правильно делать в VS2008?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.03.2013, 23:19     Как правильно инклюдить файлы исходных кодов? MSVS08
Посмотрите здесь:

Как правильно вызвать метод в С++ и как использовать команду goto в default C++
Какая дополнительная память потребуется и как она связана с количеством исходных данных C++
C++ Из маленьких исходных текстов, большие выполняемые файлы
C++ почему-то не правильно работает(файлы)
C++ Как правильно использовать классы? Как вывести значение класса на экран?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
06.03.2013, 23:26     Как правильно инклюдить файлы исходных кодов? MSVS08 #2
у вас ошибки линкера. они возникают после компилятора. т.е. синтаксически ваша программа корректна.
error LNK2005: "public: __thiscall Payment::Payment(void)
эта связана с тем, что нет объектника, в котором была бы заимплеменчена эта функция.
а это в свою очередь означает, что этот файл не компилировался. а не компилировался он потому, что не
добавлен в проект. проверить это просто. берете спп файл в котором заимплеменчена эта функция и пишете
туда заведомо некомпилируемую хрень. и если файл не компилируется, то у вас снова будут ошибки линкера,
а не ошибки компиляции. файлы добавляются в дереве файлов. там все просто. гуглица это просто.

Вторая ошибка линкера связана с неверным типом проекта. там они всякие бывают, консольное приложение, win32 приложение, прочие типы в зависимости от понаставленных плагинов.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
07.03.2013, 04:23     Как правильно инклюдить файлы исходных кодов? MSVS08 #3
Цитата Сообщение от Hellko Посмотреть сообщение
Так как же все таки правильно делать в VS2008?
Не инклюдить .cpp файлы (первая ошибка из-за этого, class.cpp получился два раза включённым в проект). В main.cpp и в class.cpp инклюдить class.h.
Hellko
6 / 6 / 1
Регистрация: 17.11.2012
Сообщений: 65
07.03.2013, 15:57  [ТС]     Как правильно инклюдить файлы исходных кодов? MSVS08 #4
Цитата Сообщение от alsav22 Посмотреть сообщение
Не инклюдить .cpp файлы (первая ошибка из-за этого, class.cpp получился два раза включённым в проект). В main.cpp и в class.cpp инклюдить class.h.
т.е. я в Qt когда делаю так, я на самом деле делаю ошибку, но ему пофиг..? или это особенность MSVS
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
07.03.2013, 16:15     Как правильно инклюдить файлы исходных кодов? MSVS08 #5
Цитата Сообщение от Hellko Посмотреть сообщение
т.е. я в Qt когда делаю так, я на самом деле делаю ошибку, но ему пофиг..? или это особенность MSVS
Тут трудно сказать (не зная деталей) почему в Qt это проходит. Но, вообще, без особой надобности, так стараются не делать. Причина выше. Среда для Qt какая? Те же самые файлы включали в Qt, что и в MSVS?

Добавлено через 8 минут
Сейчас вспомнил, в каких случаях это проходит. Это если проект не создавать, тогда обрабатывается один файл с включениями. Но не во всех средах такое получается.
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
07.03.2013, 18:43     Как правильно инклюдить файлы исходных кодов? MSVS08 #6
Цитата Сообщение от Hellko Посмотреть сообщение
т.е. я в Qt когда делаю так, я на самом деле делаю ошибку, но ему пофиг..? или это особенность MSVS
это огромная ошибка. никогда так не делай ни в каких средах разработки. В языке С раздельная компиляция. Это значит, что срр файлы и не должны знать о существовании друг друга!
Проект собирается в экзешник уже после компиляции всех исходников
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.03.2013, 11:29     Как правильно инклюдить файлы исходных кодов? MSVS08
Еще ссылки по теме:

C++ Как пользоваться заголовочными файлами и использовать несколько исходных файлов?
Обфускация компилируемых исходных кодов C++
Rак правильно подключать файлы с шаблонами C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Hellko
6 / 6 / 1
Регистрация: 17.11.2012
Сообщений: 65
08.03.2013, 11:29  [ТС]     Как правильно инклюдить файлы исходных кодов? MSVS08 #7
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
это огромная ошибка. никогда так не делай ни в каких средах разработки. В языке С раздельная компиляция. Это значит, что срр файлы и не должны знать о существовании друг друга!
Проект собирается в экзешник уже после компиляции всех исходников
спасибо, не знал.
Yandex
Объявления
08.03.2013, 11:29     Как правильно инклюдить файлы исходных кодов? MSVS08
Ответ Создать тему
Опции темы

Текущее время: 08:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru