c++ - 错误: expected class-name before '{' token { ^

标签 c++ qt

你好,我一直收到这个 错误:“{”标记之前应有类名 { ^ 第 15 行 这个错误到底意味着什么?我试图继承 Controller 类,该类具有我需要在 form1 的 cpp 中调用的函数。

#ifndef FORM1_H
#define FORM1_H


#include <QDialog>
#include "controller.h"



namespace Ui {
class form1 ;
}

class form1 : public QDialog, public controller
{
    Q_OBJECT

public:
    explicit form1(QWidget *parent = 0);
    ~form1();

private slots:
    void on_pushButton_clicked();

private:
    Ui::form1 *ui;
};

#endif // FORM1_H

Controller 类

#include "controller.h"
#include "ui_controller.h"

controller::controller(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::controller) {
    ui->setupUi(this);
    show(1); }

void controller::show(int x) {
    if(x==1)
    {
        myform1 = new form1(this);
        myform1->show();
    }
    if(x==2)
    {
        myform2 = new form2(this);
        myform2->show();
    }
    if(x==3)
    {
        myform3 = new form3(this);
        myform3->show();
    } }

controller::~controller() {
    delete ui; }

Controller .h:

#ifndef CONTROLLER_H
#define CONTROLLER_H

#include <QWidget>
#include <form1.h>
#include <form2.h>
#include <form3.h>

namespace Ui {
class controller;
}

class controller : public QWidget
{
    Q_OBJECT

public:

    form1 * myform1;
    form2 * myform2;
    form3 * myform3;

    void show(int x);
    explicit controller(QWidget *parent = 0);
    ~controller();

private:
    Ui::controller *ui;
};

#endif // CONTROLLER_H

最佳答案

我的猜测是您遇到了循环包含问题,这意味着 controller.h 直接或间接包含 form1.h

编辑:将我正在讨论的包含更改为前向声明 - 您不需要 form1 的完整定义:

#ifndef CONTROLLER_H
#define CONTROLLER_H

#include <QWidget>
class form1;
class form2;
class form3;

namespace Ui {
class controller;
}

class controller : public QWidget
{
//.................
//.................

关于c++ - 错误: expected class-name before '{' token { ^,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19922966/

相关文章:

c++ - 有没有办法不杀死抛出 std::bad_alloc 的 Qt 应用程序?

c++ - Ubuntu非法指令opencv

c++ - 重新开发 MFC 应用程序

c++ - 水平布局尺寸

c++ - 应用字体更改后丢失样式表设置

c++ - QT 5.7 MSVC 2015 静态构建不工作

c++ - 如果 std::atomic<T>::compare_exchange_weak 的期望值是非原子操作的返回值,它仍然是原子的吗?

c++ - 如何使继承相同基类的类的虚方法弄清楚如何处理它们的参数?

c++ - 连续写入导致仅访问磁盘一次

c++ - qmake 自动生成的 Makefile 编译器设置不正确