C ++ множественное определение методов или неопределенная ссылка - PullRequest
0 голосов
/ 23 мая 2018

Я делаю проект на c ++, и мне нужно, чтобы некоторые методы были виртуальными в моем классе ... поэтому, когда я включаю в свой main.cpp "class" .h, компилятор говорит неопределенную ссылку на мой метод и когда я изменяю "class.

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

Включайте только файлы hpp, а затем вам нужно добавить файл cpp в компилятор.Если вы используете командную строку, она должна выглядеть следующим образом:

g++ main.cpp class.cpp -o a.out

Если вы используете IDE C ++, он будет компилировать файл class.cpp, если он является частью вашего проекта.

0 голосов
/ 23 мая 2018

Вы всегда включаете «class.h», а не «class.cpp».Это связано с тем, что #include обрабатывается на этапе компиляции, а различные файлы .cpp объединяются на этапе компоновки.Точнее, каждый файл .cpp преобразуется в объектный файл, а затем они связываются.

Отсутствующие виртуальные методы являются результатом отсутствующего объектного файла.Мы знаем, что main.cpp есть, но компилируется ли «class.cpp»?

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