我正在 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/