豆嘉木 发表于 2023-4-8 21:55:58

为什么定义函数会报错

如图,为什么qt一离开mainwindow.cpp定义函数就会报错?

isdkz 发表于 2023-4-8 22:04:42

在这种情况下,您需要确保在mainwindow.h文件中声明getDisturb()函数,并在disturb.cpp中包含mainwindow.h。以下是具体步骤:

1、在mainwindow.h文件中声明getDisturb()函数。声明应该类似于:

class MainWindow : public QMainWindow {
    ...
    int getDisturb();
    ...
};

2、在disturb.cpp文件中包含mainwindow.h,以便在该文件中使用MainWindow类:

#include "mainwindow.h"

3、然后,在disturb.cpp文件中使用MainWindow::作用域分辨符定义getDisturb()函数:

int MainWindow::getDisturb() {
    // 函数实现
}


确保在声明和定义之间保持一致的函数原型。此外,检查头文件的包含顺序,确保没有循环依赖或遗漏的头文件。

通过这些修改,您应该能够在disturb.cpp文件中定义MainWindow::getDisturb()函数,而不会出现错误。

豆嘉木 发表于 2023-4-8 22:04:42

已解决,没写返回类型

sfqxx 发表于 2023-4-8 22:05:25

可能存在以下几种情况:

1. 函数定义缺失:如果在 `mainwindow.cpp` 中声明了一个函数,但是没有在该文件中实际定义函数的代码,则编译器会报错。需要确保在 `mainwindow.cpp` 文件中,已经实际定义了要使用的所有函数。

2. 头文件引用问题:如果 `mainwindow.cpp` 使用了其他文件中的函数或变量,则需要正确地包含这些文件的头文件。可以检查是否包含了正确的头文件。

3. 命名空间问题:如果使用了命名空间,则需要确保在 `mainwindow.cpp` 中使用的所有函数和变量都在正确的命名空间中。可以检查是否在函数和变量前面添加了正确的命名空间。

4. 函数参数不匹配:如果在 `mainwindow.cpp` 中定义的函数与在其他文件中声明的函数参数不匹配,则编译器将无法解析该函数。需要确保在定义函数时,参数列表与声明函数时完全相同。

5. 编译器问题:最后可能是编译器问题。某些编译器可能会报告错误,即使代码在语法上是正确的。如果您确定代码没有任何问题,请考虑更换编译器或升级编译器版本。

豆嘉木 发表于 2023-4-8 22:05:38

isdkz 发表于 2023-4-8 22:04
在这种情况下,您需要确保在mainwindow.h文件中声明getDisturb()函数,并在disturb.cpp中包含mainwindow.h ...

嗯嗯,我刚刚发现这个问题了,谢谢

不二猫猫 发表于 2023-4-9 04:09:08


二楼正解!


↓点↓看↓妹↓妹↓大↓腿↓
页: [1]
查看完整版本: 为什么定义函数会报错