Название: Не могу понять связи виртуальных таблиц и класса потока (Решено) Отправлено: Eten от Июль 25, 2013, 07:09 Всем доброго дня.
У меня такая проблема. Написал сам от руки, пример из книжки Шлее про потоки. У него работает из прилагающегося примера к книге, а меня вылазиет ошибка: undefined reference to `vtable for MyThread' Не понимаю, причем тут виртуальные таблицы, когда метод run переопределен. И да, кстати, когда создавал объект класса MyThread без указателей, ошибка описанная выше вылезла не один раз, а целых три. Что я сделал не так?! Вроде, все правильно написал. ??? Привожу код main.cpp: Код: #include <QApplication> Название: Re: Не могу понять связи виртуальных таблиц и класса потока Отправлено: gil9red от Июль 25, 2013, 07:12 Переместите класс в h файл :)
Название: Re: Не могу понять связи виртуальных таблиц и класса потока Отправлено: Fat-Zer от Июль 25, 2013, 08:46 или в конец допиши #include "main.moc"
Название: Re: Не могу понять связи виртуальных таблиц и класса потока Отправлено: Bepec от Июль 25, 2013, 08:50 Аплодисменты сотен поклонников иных IDE, чем QtCreator, аплодируют ногами, стоя на голове, предыдущему комментарию и желают ему больше не раскидывать такие ценные слова.
Update: Ok, Константин. Просто напоминает мне этот совет про один проект, над переводом которого в удобочитаемый и компилируемый вид я занимался месяцок. Название: Re: Не могу понять связи виртуальных таблиц и класса потока Отправлено: Eten от Июль 25, 2013, 09:13 Спасибо, сработало.
А можно еще вопрос. Я этот пример стал пробовать, когда столкнулся с такой же проблемой у себя в программе. Изначально у меня был класс потока MyThread в h файле класса RILFeniksEngine, в котором я его собирался использовать. В том h файле он был прописан, как в коде первого поста, а другой класс RILFeniksEngine был описан без кода методов, код методов я прописал в cpp файле. И у меня сработала такая же ошибка. Когда я вынес класс потока MyThread в отдельный h файл, без всяких cpp файлов к нему, и подключил его к h файлу упомянутому выше класса RILFeniksEngine, все заработало. Вот так у меня было изначально h файл, о котором говорилось ранее (все методы класса RILFeniksEngine прописаны в cpp файле): Код: #ifndef NENGINE_H Объект m класса MyThread, создаю в конструкторе и там же его запускаю, ровно также как и все подобные ему объекты. А из-за чего не работает, когда я так прописывал, как было указано в изначальном варианте кода, так и не понял. ??? Название: Re: Не могу понять связи виртуальных таблиц и класса потока Отправлено: ритт от Июль 25, 2013, 09:45 Аплодисменты сотен поклонников иных IDE, чем QtCreator, аплодируют ногами, стоя на голове, предыдущему комментарию и желают ему больше не раскидывать такие ценные слова. будьте более конструктивны в своих комментариях. сарказм не по существу пользы не несёт. |