Russian Qt Forum
Май 14, 2024, 02:37 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: undefined reference to `vtable for MClas'  (Прочитано 3936 раз)
Day
Частый гость
***
Offline Offline

Сообщений: 290


Просмотр профиля
« : Январь 14, 2012, 14:53 »

Вот решил попробовать себя в самостоятельном творчестве
И получил такую ошибку
Код:
release/main.o:main.cpp:(.text+0xcb): undefined reference to `vtable for MClas'
collect2: ld returned 1 exit status
Уж и проект чистил (и из среды "Очистить проект" и просто ручками, удалив все, кроме pro, cpp, h
Сдаюсь и прошу помощи

main.h
Код:
#ifndef _Main_h_
#define _Main_h_

#include <QObject>

class MClas : public QObject {
    Q_OBJECT
public:
    MClas() : QObject() { }
    QWidget      wgt;
public slots:
    void ShowKvadr();
    void MClock();
    void Pict();
};
#endif

main.cpp
Код:
#include <QtGui>
#include "main.h"
//-------
  MClas *Mc;
// --------------------------------
int main(int argc, char** argv)
{
    QApplication app(argc, argv);
    Mc = new MClas();
    QPushButton B1("1", &Mc->wgt);
    QPushButton B2("2", &Mc->wgt);
    QPushButton B3("2", &Mc->wgt);
    QObject::connect(&B1, SIGNAL(clicked()),
                     Mc, SLOT(ShowKvadr()));
    QObject::connect(&B2, SIGNAL(clicked()),
                     Mc, SLOT(MClock()));
    QObject::connect(&B3, SIGNAL(clicked()),
                     Mc, SLOT(Pict()));
    Mc->wgt.resize(800, 600);
    Mc->wgt.show();
    return app.exec();
}
/**************/
void MClas::ShowKvadr()
{
}
/******************/
void MClas::MClock()
{
}
/******************/
void MClas::Pict()
{
}
/[code]
[/code]
Записан
BRE
Гость
« Ответ #1 : Январь 14, 2012, 14:55 »

Запусти qmake.
Записан
Day
Частый гость
***
Offline Offline

Сообщений: 290


Просмотр профиля
« Ответ #2 : Январь 14, 2012, 15:07 »

Запусти qmake.
Тоже самое
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4727



Просмотр профиля WWW
« Ответ #3 : Январь 14, 2012, 15:34 »

как-то ты хитро пишешь, я бы даже сказал через одно место Улыбающийся

если ты хочешь свой виджет, то надо сразу и наследоваться от QWidget, и все визуальные элементы и коннекты создавать в его конструкторе. и желательно иметь 2 отдельных файла для класса, а мэин пусть себе сидит в своём main.cpp - в нём вообще помимо создания объекта QApplication обычно только создают и показывают свой основной виджет и всё.
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
mutineer
Гость
« Ответ #4 : Январь 14, 2012, 15:49 »

Код
C++ (Qt)
QPushButton B1("1", &Mc->wgt);
QPushButton B2("2", &Mc->wgt);
QPushButton B3("2", &Mc->wgt);

Не стоит давать стековым объектам Qt-шного родителя, может привести к печальным последствиям
Записан
mutineer
Гость
« Ответ #5 : Январь 14, 2012, 15:56 »

А по сути ошибки, послушай камбалу - вынеси реализацию класса в отдельный файл. То есть у тебя должно быть три файла: main.cpp, MClas.h, MClas.cpp
Записан
Day
Частый гость
***
Offline Offline

Сообщений: 290


Просмотр профиля
« Ответ #6 : Январь 15, 2012, 13:06 »

Код
C++ (Qt)
QPushButton B1("1", &Mc->wgt);
QPushButton B2("2", &Mc->wgt);
QPushButton B3("2", &Mc->wgt);
Не стоит давать стековым объектам Qt-шного родителя, может привести к печальным последствиям
Виноват, исправился.
А по сути ошибки, послушай камбалу - вынеси реализацию класса в отдельный файл. То есть у тебя должно быть три файла: main.cpp, MClas.h, MClas.cpp
Послушался, но по-началу толку не было. Посмотрел кой какие статьи, стал крутить все ручки (уже истерика) - и получилось!
В числе прочего поставил перед конструктором класса explicit. Может быть не это помогло, а всякие INCLUDEPATH +=, HEDERS +=, но во всяком случае не помешало
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.098 секунд. Запросов: 23.