抱歉我的新手问题。但我几乎没有在C ++上工作,我想管理一些与设备相关的信息。目标是在变量和所有另一个类中获取设备名称以访问此变量。
我已经定义了一个类设备:
class Device {
public:
int value;
...
}
在我的main.cpp中,
int main (...)
{
Device MyDevice;
MyDevice.value = 10;
Browse ui;
ui.show();
}
在browser.cpp中,我希望能够获取MyDevice.value并显示它。我不太确定该怎么做。 browser.cpp是cpp代码,它将显示Qt中UI支持的一些信息。使用ui.show()api。
显示当前ui答案 0 :(得分:1)
value
应该是设备的private
成员,否则您将Device
类的私有数据暴露给其客户端。虽然您的代码将运行,但这被认为是一种违反封装原则的错误编程实践。在您的value
成为私人数据成员后,为了让Device
班级的客户能够访问该成员,您应该提供一个返回getValue
的getter方法value
。获得此位置后,您应该对浏览器建模以接受对Device
对象的引用。您可以在Browser
的构造函数中执行此操作,或通过Browser
的成员函数完成此操作。在Browser
知道您的Device
实例后,它就可以调用getValue
来检索value
,以便它可以在用户界面中显示。总之,您的代码看起来像这样:
class Device {
public:
int getValue() const {
return m_value;
}
private:
int m_value;
};
class Browser {
public:
Browser(const Device& device) :
m_device(device) {
}
void displayValue() {
someWidget.show(m_device.getValue());
}
private:
const Device& m_device;
};
我从一本关于C ++(和面向对象编程)的优秀初学者着手开始,熟悉封装,参考等概念。
答案 1 :(得分:0)
我的浏览器界面定义为:
Browser.cpp
FileBrowserMainWindow::FileBrowserMainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::FileBrowserMainWindow)
{
ui->setupUi(this);
...
}
FileBrowserMainWindow::~FileBrowserMainWindow()
{
delete ui;
}
和Browser.h
namespace Ui {
class FileBrowserMainWindow;
}
class FileBrowser : public QMainWindow
{
Q_OBJECT
public:
explicit BrowserMainWindow(QWidget *parent = 0);
~FileBrowserMainWindow();
Ui::FileBrowserMainWindow *ui;
private:
const Device& m_device;
};
我不太清楚如何在Browser.h / cpp中获取值
我在主
的main.cpp中调用此UIFileBrowserMainWindow ui;
//Ui::FileBrowserMainWindow ui;
ui.show();