我遇到了一个错误,似乎无法找到其他任何地方的解决方案。
当我尝试声明“ EncodeWindow”类的实例时发生错误。编译器给出错误C2143,C4430和C2238。我只是试图给“ MainWindow”类一个“ EncodeWindow”的实例。
文件mainWindow.h
:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QString>
#include <QLabel>
#include "Image.h"
#include "encodewindow.h"
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = 0);
~MainWindow();
/*Check whether a given file path is valid*/
bool CheckFilePath(QString);
/*Sets UI widgets*/
void setOriginalImage_Label(const char*);
void setEncodedImage_Label(const char*);
void setDebug_TextBox(QString);
/*Saves all information about current encoding/decoding*/
void saveFile();
private slots:
void on_Encode_Button_clicked();
void on_Reset_Button_clicked();
void on_Save_Button_clicked();
void on_AddEncodeImage_Debug_Button_clicked();
void on_AddImage_Button_clicked();
void on_pushButton_clicked();
private:
Ui::MainWindow *ui;
EncodeWindow *CurrentEncodeWindow = new EncodeWindow; //ERROR HERE!! C2143
int fileNumber = 0;
};
#endif // MAINWINDOW_H
文件
encodeWindow.h
:#ifndef ENCODEWINDOW_H
#define ENCODEWINDOW_H
#include <QMainWindow>
#include "mainwindow.h"
namespace Ui {
class EncodeWindow;
}
class EncodeWindow : public QMainWindow
{
Q_OBJECT
public:
explicit EncodeWindow(QWidget *parent = 0);
~EncodeWindow();
/*Get filepaths from 'result' object (For access to filepaths without 'encode' Window)*/
const char* getOriginalFilePath();
const char* getEncodeFilePath();
const char* getSaveFilePath();
bool checkUI(const char*,const char*,const char*,bool*);
bool CheckFilePath(const char*);
std::string readInText(const char*);
private slots:
void on_RedChannel_CheckBox_clicked(bool);
void on_GreenChannel_CheckBox_clicked(bool);
void on_BlueChannel_CheckBox_clicked(bool);
void on_AlphaChannel_CheckBox_clicked(bool);
void on_BitDepth_Slider_sliderMoved(int);
void on_BitDepth_SpinBox_valueChanged(int);
void on_Encode_Button_clicked();
private:
Ui::EncodeWindow *ui;
Encoded result; //Enocoded object (child of Image class)
};
#endif // ENCODEWINDOW_H
任何帮助都会很棒。该代码是在Qt中完成的,用于图像隐写术项目。
谢谢。
最佳答案
您有通函包括。 “ mainwindow.h”包括“ encodewindow.h”,“ encodewindow.h”包括“ mainwindow.h”。包含卫士停止了循环,但是,首先包含哪个标头的类定义在第二个包含文件中将不完整,这将导致错误。
在上面的代码段中,我在encodewindow.h
中看不到任何内容使用mainwindow.h
中的任何内容,因此只需从encodewindow.h中删除mainwindow.h的包含内容即可。
关于c++ - 失踪 ';'在实例声明之后的“*”之前,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43379935/