89 / 87 / 33
Регистрация: 20.07.2016
Сообщений: 403
1

Main.cpp:10: ошибка: undefined reference to `vtable for A'

20.02.2018, 10:56. Показов 1416. Ответов 4
Метки нет (Все метки)

вот такая легкая программа не компилируется:
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <QCoreApplication>
#include <QObject>
#include <iostream>
 
class A: public QObject
{
  Q_OBJECT
 
  public:
    A (QObject* p = nullptr): QObject(p)
    {  }
 
    ~A ()
    { std::cout << "~A()"; }
};
 
//==================================================================================
int main(int argc, char *argv[])
{
  QCoreApplication aaa(argc, argv);
 
  QObject obj;
 
  { A* a = new A(&obj); }
 
  return aaa.exec();
}
почему?

Добавлено через 1 час 2 минуты
UPD: забавно... объявление класса нужно вынести в отдельный .h (ну а определение, если оно имеет место быть - в .cpp), иначе работать не хочет
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.02.2018, 10:56
Ответы с готовыми решениями:

Ошибка: undefined reference to `vtable for MySlot'
#include &lt;QApplication&gt; #include &lt;QWidget&gt; #include &lt;QObject&gt; #include &lt;QtCore&gt; class MySlot :...

Ошибка "undefined reference to'vtable for Triangle'"
Здравствуйте, Показывает на конструктор, не дает запуститься программе. Проблемы: ошибка :...

Undefined reference to `vtable for MClas'
Обнаглел настолько, что решил попробовать себя в самостоятельном творчестве И получил такую ошибку...

Q_OBJECT undefined reference to vtable
Не могу понять почему ругается компилер на виртуальные таблицы при добавлении макроса Q_OBJECT....

4
зомбяк
1565 / 1214 / 345
Регистрация: 14.05.2017
Сообщений: 3,936
20.02.2018, 11:17 2
В вышеприведённом виде moc-файл для класса А не сгенерируется. Чтобы этот файл не требовался, нужно было убрать макрос Q_OBJECT
1
89 / 87 / 33
Регистрация: 20.07.2016
Сообщений: 403
20.02.2018, 11:19  [ТС] 3
Цитата Сообщение от TRam_ Посмотреть сообщение
Чтобы этот файл не требовался, нужно было убрать макрос Q_OBJECT
да, так тоже работает
0
зомбяк
1565 / 1214 / 345
Регистрация: 14.05.2017
Сообщений: 3,936
20.02.2018, 11:27 4
И для проверки лучше сделать так:

C++
1
2
  QTimer::singleShot(1000, &aaa, SLOT(quit()));
  return aaa.exec();
Или уже плодить логику закрытия. Кстати деструктор А вполне себе вызывается.
0
89 / 87 / 33
Регистрация: 20.07.2016
Сообщений: 403
20.02.2018, 11:34  [ТС] 5
Цитата Сообщение от TRam_ Посмотреть сообщение
Кстати деструктор А вполне себе вызывается.
да, я написал так:
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
int main(int argc, char *argv[])
{
  QCoreApplication aaa(argc, argv);
 
  {
    QObject obj;
 
    { A* a = new A(&obj); }
  }
 
  return aaa.exec();
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.02.2018, 11:34
Помогаю со студенческими работами здесь

Undefined reference to `vtable for Vim'
Привет всем! пользуесь линуксом...установил qt creator 2.7.2 qt 5.1.0 ... написал самый простой...

Undefined reference to `vtable. И еще
Ошибки: tree.cpp:8: ошибка: undefined reference to `vtable for Tree' tree.cpp:66: ошибка:...

undefined reference to `vtable for TLabel'
Добрый вечер . Помогите исправить ошибку . Пишу свою первую программу в Qt Creator , которая должна...

Qt5/CMake undefined reference to 'vtable '
В qmake собирает, а с cmake проблемы. Помогите разобраться. Структура проекта: include src...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru