访问多个源文件中的同一个类实例

时间:2012-12-06 11:22:26

标签: c++ qt class opencv

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

所以我有一个主窗口(显示摄像头和一些用于摄像机设置的滑块)和一个对话窗口,当按下带有滑块的按钮进行高级设置时,该窗口会打开。我的问题是: 我在像

这样的类的实例中创建
Moving M; 
在mainwindow.cpp中,我可以设置像

这样的参数
M.BasicSetting1 = someValue; 

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

那么我在哪里以及如何创建类的实例移动以在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

Moving.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

    };

mainwindow.cpp

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


        Moving M;

        M.BasicSetting1 = SliderValue; 

        M.move();  //shows camera



    //and of course lots of other stuff

1 个答案:

答案 0 :(得分:4)

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

所有这一切对于编程概念都是非常基础的。在写论文之前,也许你应该阅读一些教程并做一些其他较小的东西;修补坏代码可能非常耗时。