Search code examples
qtclassheader-files

why the first included class is recognized but the second included class is not?


Hi I have 2 classes named Search and Search2. When I include them in the mainwindow.h in qt, only the first included class is recognized and the second one is not. In other words if I first include search2.h then search.h, it will not recognize Search. These are my header files. Can anyone help?

mainwndow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QtGui/QWidget>
#include "ui_mainwindow.h"
#include "search.h"
#include <QString>
#include <QStringList>
#include <QThread>
#include "search2.h"
 namespace Ui {
 class MainWindow;
 }

 class MainWindow : public QMainWindow
 {
   Q_OBJECT

 public:

QThread* thread1 ;
QThread* thread2 ;
Search*  mySearch;
Search2* mySearch2;

explicit MainWindow(QWidget *parent = 0);
~MainWindow();

float frequency;
QString freq ;
int flag;

signals:


private slots:

void  on_pushButton_2_clicked();
void  receive_from_object(QStringList);
void  receive_from_object1(QStringList);
void  receive_from_object2(QStringList);

void  on_pushButton_3_clicked();

private:

Ui::MainWindow *ui;

};

#endif // MAINWINDOW_H

search.h

#ifndef SEARCH_H
#define SEARCH_H

#include <QWidget>
#include <QObject>
#include <QMutex>
#include <QString>
#include <QStringList>
 #include <QDebug>
#include <qtimer.h>
#include <QtConcurrentRun>
#include <QMessageBox>
#include <QThread>
#include <QMessageBox>
#include <QWaitCondition>


namespace Ui {
class Search;
}

class Search : public QWidget
{
  Q_OBJECT

public:

explicit Search(QWidget *parent = 0);


void Input_param(float RFfreq);

~Search();

void requestWork();
void abort();

QStringList slist3;
QString freqLog;
double output_search[5] ;

private:
 Ui::Search *ui;

bool _abort;
bool _working;



 signals:
 void transmit_to_gui(QStringList);



 void finished();
 void workRequested();

 void frequencyFound(QStringList);
 void frequencyLog(QString) ;
 void finishedscan() ;

 public slots:
 void receiveDateBand(QString);
  };

 #endif // SEARCH_H

search2.h

#ifndef SEARCH_H
#define SEARCH_H

#include <QWidget>
#include <QObject>
#include <QMutex>
#include <QString>
#include <QStringList>
#include <QDebug>
#include <qtimer.h>
#include <QtConcurrentRun>
#include <QMessageBox>
#include <QThread>
#include <QMessageBox>
#include <QWaitCondition>

namespace Ui {
class Search2;
}

class Search2 : public QWidget
{
  Q_OBJECT

public:
explicit Search2(QWidget *parent = 0);


~Search2();


 void requestWork2();
 void abort2();

 QStringList slist3;
  QString freqLog;
 double output_search[5] ;

 private:
 Ui::Search2 *ui;

bool _abort;
bool _working;
//QMutex mutex;


signals:
void transmit_to_gui1(QStringList);
void transmit_to_gui2(QStringList);

void finished2();
void workRequested2();

void frequencyFound(QStringList);
void frequencyLog(QString) ;
void finishedscan2() ;


public slots:
void receiveDateBand2(QString) ;

};

#endif // SEARCH_H

Thanks in advance.


Solution

  • Now excatly sure if this is the reason, but in your second class you added the same header definition:

    #ifndef SEARCH_H instead of  #ifndef SEARCH2_H