LINUX.ORG.RU

[Qt] Требуется свежий взгляд

 


0

0

Под вечер могз уже отказывается работать и внимание немного подводит, потому прошу помощи у ЛОРа.

tcpread.h

#include <qserversocket.h>
#include «clientsocket.h» //хедер для ClientSocket

class tcpRead : public QServerSocket
{
   public:
      
   tcpRead( QObject* );
   ~tcpRead();
   
   void newConnection( int );
   
   signals:
      
   void newConnect( ClientSocket* );
   
};

tcpread.cpp

#include «tcpread.h»

tcpRead::tcpRead( QObject* parent = 0 ) : QServerSocket( 4242, 1, parent )
{
   if ( !ok() )
   {
      exit(1);
   }
}

tcpRead::~ tcpRead()
{
   
}

void tcpRead::newConnection( int socket )
{
   ClientSocket *s = new ClientSocket( socket, this, 0 );
   emit newConnect( s );
}

При линковании (опять оно) выходила следующая ошибка:

tcpread.o: In function `tcpRead::newConnection(int)':
tcpread.cpp:(.text+0x4e): undefined reference to `tcpRead::newConnect(ClientSocket*)'

Тогда я заметил что не указал Q_OBJECT в хедер файле, но после добавления его стали выпадать на той же стадии линкования ошибки
undefined reference to ` vtable for tcpRead`
практически на каждую функцию в классе.

Что я упустил?



Последнее исправление: desruptor (всего исправлений: 1)
Ответ на: комментарий от panter_dsd

>Q_OBJECT забыл

цитирую:

Тогда я заметил что не указал Q_OBJECT в хедер файле, но после добавления его стали выпадать на той же стадии линкования ошибки undefined reference to ` vtable for tcpRead` практически на каждую функцию в классе.

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

Не заметил. *смущенный_смайлик*

После добавления Q_OBJECT обязательно нужно qmake делать.

panter_dsd ★★★★
()

Это Qt3?

/* tcpread.h */
#include <qserversocket.h>

// хедер для ClientSocket тут не нужен
class ClientSocket;

class tcpRead : public QServerSocket // это Qt3?
{
   Q_OBJECT // про это уже сказали
   public:
      
   tcpRead( QObject* );
   ~tcpRead();
   
   void newConnection( int );
   
   signals:      
   void newConnect( ClientSocket* );   
};

/* tcpread.cpp */
// а вот тут нужен
#include "clientsocket.h" 
#include "tcpread.h"

tcpRead::tcpRead( QObject* parent = 0 ) : QServerSocket( 4242, 1, parent )
{
   if ( !ok() )
   {
      exit(1);
   }
}

tcpRead::~ tcpRead()
{   
}

void tcpRead::newConnection( int socket )
{
   ClientSocket *s = new ClientSocket( socket, this, 0 );
   emit newConnect( s );
}
anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.