LINUX.ORG.RU

Наследованный от интерфейса класс: проблемы с линковкой


0

0

Собственно, ситуация такова: есть некий интерфейс !!!с чистым виртуальным деструктором!!!. От него наследуется класс, где все функции интерфейса определяются, и деструктор в том числе. Интерфейс вынесен в отдельные файлы (interface.cpp и interface.h), производный класс -- в свои (main.cpp и main.h). При компиляции этого безобразия одной командой:

g++ -Wall ./interface.cpp ./main.cpp -o ./main

всё нормально. Но если делать

g++ -Wall -c ./main.cpp -o ./main.o

а потом

g++ ./main.o -o ./main

линкер начинает орать, что ссылка на деструктор базового интерфейса не определена:

./main.o(.text+0x2eb):main.cpp: undefined reference to `IBase::~IBase()' ./main.o(.text+0x315):main.cpp: more undefined references to `IBase::~IBase()' follow

Что нужно сказать g++ на втором этапе, чтобы он заткнулся?

Да, забыл сказать, в файле ./interface.cpp находится определение деструктора интерфейса, вот так:

IBase::~IBase() { ; }

one_more_hokum ★★★
() автор топика
Ответ на: комментарий от gzh

То есть, скомпилировать ещё и интерфейс в объектник? Щас попробую.

one_more_hokum ★★★
() автор топика
Ответ на: комментарий от gzh

Ну надо-же! Помогло. Спасибо (а то долго-бы ещё тупил)!

one_more_hokum ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.