c++ - 在多个源文件中访问相同的类实例

标签 c++ qt class opencv

我正在 Qt 中使用 opencv,为我的论文做一些视频识别的工作。

所以我有一个主窗口(显示相机和一些用于相机设置的 slider )和一个对话框窗口,当按下带有 slider 的按钮进行高级设置时,该对话框窗口将打开。我的问题是: 我创建了一个类的实例,比如

Moving M; 

在 mainwindow.cpp 中,我可以设置如下参数

M.BasicSetting1 = someValue; 

但我无法在另一个窗口(对话框)中访问 M 实例,以设置 M.AdvencedSettings。

那么我必须在何处以及如何创建类 Moving 的实例以在 mainwindow.cpp 和 dialog.cpp 中设置其参数?我希望我已经足够清楚了......也许如果有人可以发布一个简单的例子来说明如何做到这一点。非常感谢您的帮助!


这是我所拥有的(我不会发布完整的代码,因为这样会更容易(我希望我不必:))

Moving.h        //where my class is defined which accesses my webcam and stuff
mainwindow.h    //mainwindow where it shows the video with basicsettings
dialog.h        //some advanced settings for the webcam

main.cpp         
Moving.cpp
Mainwindow.cpp    
dialog.cpp

移动.h

        class Moving
    {

    public:

int BasicSetting1;
int Basic Setting2;

int AdvancedSetting1;
int AdvancedSetting2;

    //lots of other stuff

    Moving();
    ~Moving();

    void move();  //starts and shows the camera

    };

主窗口.cpp

      #include "Moving.h"
      #include "mainwindow.h"


        Moving M;

        M.BasicSetting1 = SliderValue; 

        M.move();  //shows camera



    //and of course lots of other stuff

最佳答案

如果我正确阅读了您的代码,那么您正在堆栈上创建 Moving 的实例。共享对堆栈对象的指针或引用可能很危险。相反,您可以在 mainwindow 中声明 Moving 并添加一个 getter 类型方法(即 Moving* getMoving())以返回指向您的 移动对象。然后为您的 Dialog 提供指向 mainwindow 的指针。

所有这些都是编程概念的基础。也许您应该在写论文之前阅读一些教程并做一些其他较小的事情;修补错误代码可能非常耗时。

关于c++ - 在多个源文件中访问相同的类实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13742567/

相关文章:

python - 在 python 中的两个对象之间的操作中,其操作重载为优先级?

c++ - 如何在二叉树遍历C++的末尾添加一个新行

c++ - 别人的库#define命名冲突

C++ DLL插件接口(interface)

c++ - Qt物理场景多线程

qt - 复制部分QString

c++ - 两个 for 循环和其中的一个 if 语句

c++ - gprof 与 Qt 应用程序

c# - 可以在类中存储 LINQ 查询吗?

c++ - 为什么在 C++ 中不为私有(private)嵌套类调用析构函数?