Создать экземпляр класса в другом классе

Я новичок в C ++ относительно Qt. У меня следующая проблема: я хочу создать экземпляр объекта CLEyeCameraCapture в публичной части заголовка Qt, однако я получаю кучу синтаксических ошибок из CLEyeCameraCapture.h.

Я получаю следующие (немецкий) синтаксические ошибки:

CLEyeCameraCapture.h (7): ошибка C2146: синтаксический фехлер: Fehlendes ‘;’ VOR
Bezeichner ‘_windowName’ CLEyeCameraCapture.h (7): ошибка C4430:
Fehlender Typspezifizierer — интригующий странник. Hinweis:
«default-int» — странный фон C ++.

CLEyeCameraCapture.h (7): ошибка C4430: Fehlender Typspezifizierer — int wird angenommen.
Hinweis: «default-int», странный фон C ++, не может быть unterstützt.

CLEyeCameraCapture.h (8): ошибка C2146: Синтаксисфехлер: Fehlendes ‘;’ VOR
Bezeichner ‘_cameraGUID’ CLEyeCameraCapture.h (8): ошибка C4430:
Fehlender Typspezifizierer — интригующий странник. Hinweis:
«default-int» — странный фон C ++.

…и так далее…

Заранее благодарю за любую помощь. Вот мой код:

qtdevc.h (заголовок моего класса приложения)

#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 (еще не очищено)

#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

редактировать

в том числе

«#include» перед «#include» в
qDEVC.h

решил проблему с ошибками синтаксиса при компиляции, но теперь я получаю ошибки C2146, C3210 а также C2602 когда пытаюсь инстанцировать

CLEyeCameraCapture::CLeyeCameraCapture cam;

какой правильный путь?

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

4

Решение

Чтобы исправить ошибку компиляции,

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

для получения дополнительной информации Ошибка компилятора C2146

Правило: Лучше всего сначала включать стандартные заголовки, а затем собственные заголовки.Порядок заголовка C ++

2

Другие решения

Ваш компилятор понятия не имеет, что такое CHAR или GUID. Включите необходимые заголовочные файлы Windows, чтобы компилятор знал определение этих типов данных. Наверное, в том числе просто windows.h может быть достаточно.

0

По вопросам рекламы [email protected]