鱼C论坛

 找回密码
 立即注册
查看: 514|回复: 5

[已解决]为什么定义函数会报错

[复制链接]
发表于 2023-4-8 21:55:58 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

bug

bug
最佳答案
2023-4-8 22:04:42
在这种情况下,您需要确保在mainwindow.h文件中声明getDisturb()函数,并在disturb.cpp中包含mainwindow.h。以下是具体步骤:

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

  1. class MainWindow : public QMainWindow {
  2.     ...
  3.     int getDisturb();
  4.     ...
  5. };
复制代码


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

  1. #include "mainwindow.h"
复制代码


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

  1. int MainWindow::getDisturb() {
  2.     // 函数实现
  3. }
复制代码



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

通过这些修改,您应该能够在disturb.cpp文件中定义MainWindow::getDisturb()函数,而不会出现错误。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-4-8 22:04:42 | 显示全部楼层    本楼为最佳答案   
在这种情况下,您需要确保在mainwindow.h文件中声明getDisturb()函数,并在disturb.cpp中包含mainwindow.h。以下是具体步骤:

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

  1. class MainWindow : public QMainWindow {
  2.     ...
  3.     int getDisturb();
  4.     ...
  5. };
复制代码


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

  1. #include "mainwindow.h"
复制代码


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

  1. int MainWindow::getDisturb() {
  2.     // 函数实现
  3. }
复制代码



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

通过这些修改,您应该能够在disturb.cpp文件中定义MainWindow::getDisturb()函数,而不会出现错误。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-4-8 22:04:42 | 显示全部楼层
已解决,没写返回类型
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-8 22:05:25 | 显示全部楼层
可能存在以下几种情况:

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

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

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

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

5. 编译器问题:最后可能是编译器问题。某些编译器可能会报告错误,即使代码在语法上是正确的。如果您确定代码没有任何问题,请考虑更换编译器或升级编译器版本。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

嗯嗯,我刚刚发现这个问题了,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2023-4-9 04:09:08 | 显示全部楼层

二楼正解!


↓点↓看↓妹↓妹↓大↓腿↓
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-27 23:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表