zhangyubo325 2024-02-28 16:41 采纳率: 0%
浏览 4

C++实现两个类的相互调用

帮忙看下 我想用类的前置声明来实现两个类相互调用 编译时没问题 在运行阶段会报错

img

img

  • 写回答

3条回答 默认 最新

  • 关注

    zhangyubo325 下午好🌅🌅🌅
    本答案参考通义千问

    根据您的代码,您想要在view_Ftcy_Test类中实例化ctrl_Sp类,并在ctrl_Sp类中有一个view_Ftcy_Test类型的指针。在C++中,如果两个类没有完全定义就互相引用,编译器通常不会有问题,但运行时可能会出错,因为它们可能有不同的内存布局。为了实现这种相互调用,你需要确保以下几点:

    1. 类的声明和定义:先在view_Ftcy_Test.h中对ctrl_Sp进行预声明(forward declaration),然后在view_Ftcy_Test.cpp或一个独立的头文件ctrl_Sp.h中定义ctrl_Sp

      view_Ftcy_Test.h:

      class ctrl_Sp;
      

      ctrl_Sp.h:

      #ifndef CTRL_SP_H
      #define CTRL_SP_H
      
      // Include the forward declaration of view_Ftcy_Test
      #include "view_Ftcy_Test.h"
      
      class ctrl_Sp : public QObject {
          // Class definition...
      };
      
      #endif // CTRL_SP_H
      
    2. 构造函数参数:在view_Ftcy_Test的构造函数中,将ctrl_Sp的指针作为参数传递给它。

      view_Ftcy_Test.cpp:

      #include "ctrl_Sp.h"
      
      view_Ftcy_Test::view_Ftcy_Test(QWidget *parent /*= nullptr*/)
          : QWidget(parent), m_ctrlSp(new ctrl_Sp(this)) {
          // Initialize m_ctrlSp...
      }
      
    3. 成员变量的初始化:在ctrl_Sp的构造函数中,确保正确初始化view_Ftcy_Test指针。

      ctrl_Sp.cpp:

      ctrl_Sp::ctrl_Sp(QObject *parent /*= nullptr*/)
          : QObject(parent), m_viewFtcyTest(nullptr) {
          // Set m_viewFtcyTest to a pointer to the view_Ftcy_Test object in the constructor
          m_viewFtcyTest = new view_Ftcy_Test(this);
      }
      
      // Add a destructor for m_viewFtcyTest if needed
      ~ctrl_Sp() {
          delete m_viewFtcyTest;
      }
      
    4. 成员函数的使用:现在在ctrl_Sp类中,您可以安全地使用m_viewFtcyTest了。

    确保在所有涉及这两个类的地方遵循上述步骤,这样应该可以解决运行时错误。如果问题仍然存在,请检查是否有其他未声明的变量或函数导致的错误。

    评论

报告相同问题?

问题事件

  • 修改了问题 2月28日
  • 创建了问题 2月28日

悬赏问题

  • ¥30 YOLO检测微调结果p为1
  • ¥20 求快手直播间榜单匿名采集ID用户名简单能学会的
  • ¥15 DS18B20内部ADC模数转换器
  • ¥15 做个有关计算的小程序
  • ¥15 MPI读取tif文件无法正常给各进程分配路径
  • ¥15 如何用MATLAB实现以下三个公式(有相互嵌套)
  • ¥30 关于#算法#的问题:运用EViews第九版本进行一系列计量经济学的时间数列数据回归分析预测问题 求各位帮我解答一下
  • ¥15 setInterval 页面闪烁,怎么解决
  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题