2013-08-27 5 views
4

Je suis nouveau en C++ en tant que Qt. J'ai le problème suivant: Je veux instancier un objet CLEyeCameraCapture dans la partie publique d'en-tête Qt, cependant je reçois beaucoup d'erreurs de syntaxe de CLEyeCameraCapture.h.Instancier une classe dans une autre classe

Je reçois les suivants (en allemand): syntaxe errrors

CLEyeCameraCapture.h (7): erreur C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner '_windowName' CLEyeCameraCapture.h (7): erreur C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.

CLEyeCameraCapture.h (7): erreur C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.

CLEyeCameraCapture.h (8): erreur C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner '_cameraGUID' CLEyeCameraCapture.h (8): erreur C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.

... et ainsi de suite ...

Merci à l'avance pour toute aide. Voici mon code:

qtdevc.h (en-tête de ma classe d'application)

#ifndef QTDEVC_H 
#define QTDEVC_H 

#include <QtGui/QMainWindow> 
#include "ui_qtdevc.h" 
#include <QString> 
#include <QDebug> 
#include <CLEyeCameraCapture.h> 
#include <stdafx.h> 

class qtDEVC : public QMainWindow 
{ 
    Q_OBJECT 

public: 
    qtDEVC(QWidget *parent = 0, Qt::WFlags flags = 0); 
    ~qtDEVC(); 
    Ui::qtDEVCClass ui; 
    CLEyeCameraCapture::CLeyeCameraCapture cam; 

private: 
    QPushButton *PushButton_startCam; 
    QPushButton *PushButton_stopCam; 
    QPushButton *PushButton_startLogging; 
    QPushButton *PushButton_quit; 
    QLineEdit *lineEditID; 


// begin new code 
public slots: 
    int startCam(); 
    void stopCam(); 
    void quit(); 
// end new code 

}; 

#endif // QTDEVC_H 

CLEyeCameraCapture.h

#ifndef CLEYECAMERACAPTURE_H 
#define CLEYECAMERACAPTURE_H 

// Sample camera capture class 
class CLEyeCameraCapture 
{ 
    CHAR _windowName[256]; 
    GUID _cameraGUID; 
    CLEyeCameraInstance _cam; 
    CLEyeCameraColorMode _mode; 
    CLEyeCameraResolution _resolution; 
    float _fps; 
    HANDLE _hThread; 
    bool _running; 
    std::string _participant; 
public: 
    CLEyeCameraCapture(LPSTR windowName, GUID cameraGUID, CLEyeCameraColorMode mode, CLEyeCameraResolution resolution, float fps) : 
     _cameraGUID(cameraGUID), _cam(NULL), _mode(mode), _resolution(resolution), _fps(fps), _running(false) 
    { 
     strcpy(_windowName, windowName); 
    } 

    double GetRandomNormalized(); 
    bool StartCapture(std::string ID); 
    void StopCapture(); 
    void IncrementCameraParameter(int param); 
    void DecrementCameraParameter(int param); 
    void Run(); 
    static DWORD WINAPI CaptureThread(LPVOID instance); 
}; 

My Qt App (non encore nettoyé jusqu'à)

#include "qtdevc.h" 
#include <QtGui> 
#include <QDebug> 
#include <QtGui/QApplication> 
#include "stdafx.h" 
#include "CLEyeCameraCapture.h" 
using namespace std; 

qtDEVC::qtDEVC(QWidget *parent, Qt::WFlags flags) 
    : QMainWindow(parent, flags) 
{ 
    ui.setupUi(this); 
    connect (ui.pushButton_startCam, SIGNAL(clicked()),this,SLOT(startCam())); 
    connect (ui.pushButton_quit, SIGNAL(clicked()),this,SLOT(quit())); 
    connect (ui.pushButton_stopCam, SIGNAL (clicked()),this,SLOT(stopCam())); 
} 

qtDEVC::~qtDEVC() 
{ 
} 

//get ID of participant 
int qtDEVC::startCam() 
{ 
    //qt part 

    //ui.startCam->setText("Hi!"); 
    QString ID; 
    //get qString Participant Number 
    ID = ui.lineEditID->text(); 
    //convert to standard string 
    std::string IDString = ID.toLocal8Bit().constData(); 
    //qDebug()<<ID; 
    ui.lineEditID->setDisabled(true); 
    ui.pushButton_startCam->setDisabled(true); 


    //moved this to here from main 
    CLEyeCameraCapture *cam[2] = { NULL }; 
    srand(GetTickCount()); 
    // Query for number of connected cameras 

...

modifier

dont

"#include" avant "#include" dans qDEVC.h

a résolu le problème avec les erreurs de syntaxe dans la compilation, mais maintenant j'obtiens des erreurs C2146, C3210 et C2602 quand tryin à instancier

CLEyeCameraCapture::CLeyeCameraCapture cam; 

Quelle est la bonne méthode?

CLEyeCameraCapture::CLeyeCameraCapture *cam[2]; ?? 
+1

Indiquez le code minimal à l'origine du problème. –

+0

Qu'est-ce que «Q_OBJECT» dans le premier fichier d'en-tête? –

+0

Tout afficher ne résoudra pas les choses ... Pouvez-vous comprendre quel extrait donne des problèmes ..? – NREZ

Répondre

2

Pour corriger votre erreur de compilation,

Please Include "#include <stdafx.h>" before "#include <CLEyeCameraCapture.h>" in qDEVC.h. 

pour plus d'infos Compiler Error C2146

Règle: Les meilleures pratiques pour inclure les en-têtes standards, puis vos propres têtes. C++ Header order

+0

merci qui a aidé mais je continue encore à lutter .. voir modifier. – refuzee

+0

Veuillez réorganiser selon la règle, stdafx.h, puis Qt, puis CLEyeCameraCapture.h, puis qtDev.h? et compiler .. – Ashif

+0

#include #include #include "ui_qtdevc.h" #include me donne les mêmes erreurs que dans l'édition. Je pense vraiment que ma construction d'instanciation de la classe CLEyeCameraCapture est fausse erreur C2602: 'CLEyeCameraCapture :: {ctor}' n'est pas membre d'une classe de base de 'qtDEVC' – refuzee

0

Votre compilateur n'a aucune idée de ce qu'est CHAR ou GUID. Incluez les fichiers d'en-tête Windows nécessaires pour que le compilateur connaisse la définition de ces types de données. Probablement y compris juste windows.h pourrait être suffisant.

+0

merci, mais n'a aucun effet;/ – refuzee

Questions connexes