| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > [Qt] no matching function for QObject::connect() |
| Автор: kemiisto 17.6.2011, 12:26 | ||||
Ругается на
Не нравится ему вторая часть, связанная со слотом. Такое ощущение, что он не считает Render::MoleculeEditor наследником QObject. Но это так. Render::MoleculeEditor <- Render::MoleculeViewer <- QGLViewer <- QGLWidget <- QWidget <- QObject. Что за %^$#@? Добавлено через 7 минут и 26 секунд http://doc.qt.nokia.com/latest/moc.html#multiple-inheritance-requires-qobject-to-be-first Что значит "virtual inheritance"? И что значит "is not supported"? |
| Автор: Sartorius 17.6.2011, 12:35 |
| Может явно преобразовать к QObject*? ЗЫ А ты и МД движек на Qt пишешь или только редактор? |
| Автор: kemiisto 17.6.2011, 12:40 |
Только редактор. Никогда же не было нужно! Нет, тут что-то другое. |
| Автор: borisbn 17.6.2011, 12:47 | ||||||
почему так уверенно ? нет ли у Chemistry::MolecularMechanics и Render::MoleculeEditor множественного наследования ? Если есть, то предок, у которого предок QObject должен быть первым в списке
Есть ли в h-никах связываемых классов макрос Q_OBJECT ? Попробуй сделать
что говорит ? Добавлено через 2 минуты и 24 секунды
Sartorius, откуда цитата ??? |
| Автор: kemiisto 17.6.2011, 12:52 | ||||||
Если изменить вторую часть - компилируется.
Нет. Нет у меня такого. Я просто в доке нашёл. Не знал, что это.
Нету. Ну, то есть у QWidget там есть, но там всё правильно. Да есть. На второй строчке пишет:
|
| Автор: Sartorius 17.6.2011, 12:57 |
| Можно еще посмотреть, что moc на выходе дает. Добавлено через 5 минут и 52 секунды Да, еще бывает qmake помогает в таких случаях, что б makefile обновился |
| Автор: kemiisto 17.6.2011, 13:04 |
Ничего. Не доходит до moc, ошибка раньше. |
| Автор: borisbn 17.6.2011, 13:08 | ||||
давай проверим:
|
| Автор: kemiisto 17.6.2011, 13:10 | ||
borisbn, я уже проверил. Ничто не работает. Кроме, естественно
|
| Автор: borisbn 17.6.2011, 13:14 |
значит однозначно © самизнаетекто Render::MoleculeEditor не является наследником Render::MoleculeViewer выложи кусок (самое начало) описания класса Render::MoleculeEditor |
| Автор: kemiisto 17.6.2011, 13:20 | ||||
Ну я же не совсем идиот.
|
| Автор: math64 17.6.2011, 13:44 |
| Вставьте #error в заголовок. Если компилятор не будет ругаться на #error, значит заголовок берётся откуда-то из другого места. |
| Автор: kemiisto 17.6.2011, 13:56 | ||
Не ругается. Ну так он и не доходит до файла с исходным кодом, где этот заголовок включен. И брать этот заголовок больше неоткуда. |
| Автор: bsa 17.6.2011, 15:09 |
| kemiisto, может стоит включить файл в тот cpp, в котором проблемный connect? Подозреваю, что у тебя используются предопределения. |
| Автор: kemiisto 17.6.2011, 15:32 | ||
Решено. Спасибо. Думал в этом направлении, но счёл идиотизмом. Вообще эта метаобъектная система Qt по информативности сообщений об ошибках даст фору шаблонам. Тьфу! P.S. Всё больше склоняюсь к идее массовых репрессий С++-программистов. Так сказать принести из в жертву во имя Прогресса. |
| Автор: EnergoHokum 17.6.2011, 15:33 |
| А этот tab->moleculeEditor() возвращает ссылку на объект класса, наследованного от QObject? |
| Автор: kemiisto 17.6.2011, 15:35 | ||
Да. |
| Автор: EnergoHokum 17.6.2011, 15:40 |
| Это я пока набирал сообщение, уже решили проблему, значит. Опоздал к раздаче... |