如何访问由另一个 API 定义和分配的变量
How to access to a variables defined and assigned by another API
很抱歉我的新手问题。 但是我正在研究C++几次,我想管理一些与设备相关的信息。 目标是在变量中获取设备的名称以及访问此变量的所有其他类。
我已经定义了一个类设备:
class Device {
public:
int value;
...
}
在我的主.cpp,
int main (...)
{
Device MyDevice;
MyDevice.value = 10;
Browse ui;
ui.show();
}
在浏览器中.cpp,我希望能够获取 MyDevice.value 并显示它。我真的不知道该怎么做。browser.cpp 是 cpp 代码,它将在 Qt 中显示 UI 支持的一些信息。 当前 UI 使用 UI.show() API 显示。
value
应该是设备的private
成员,否则您将Device
类的私人数据暴露给其客户端。尽管您的代码将运行,但这被认为是违反封装原则的不良编程实践。将value
设置为私有数据成员后,为了使Device
类的客户端能够访问它,您应该提供一个getter方法,例如返回value
getValue
。拥有此位置后,您应该对浏览器进行建模以接受对Device
对象的引用。您可以在 Browser
的构造函数中执行此操作,也可以通过 Browser
的成员函数来实现此操作。一旦您的Browser
知道您的Device
实例,它就可以调用getValue
来检索value
以便它可以在 UI 中显示它。总之,您的代码将如下所示:
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++(和面向对象编程)的初学者书籍开始,以熟悉封装、引用等概念。
我的浏览器界面由下式定义:
浏览器.cpp
FileBrowserMainWindow::FileBrowserMainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::FileBrowserMainWindow)
{
ui->setupUi(this);
...
}
FileBrowserMainWindow::~FileBrowserMainWindow()
{
delete ui;
}
和浏览器。
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;
};
我不太确定如何在浏览器中获取值。
我主要调用此 UI.cpp在主要
FileBrowserMainWindow ui;
//Ui::FileBrowserMainWindow ui;
ui.show();
相关文章:
- TensorRT (C++ API) 对"createNvOnnxParser_INTERNAL"的未定义引用
- 为什么我在 Windows API 中得到对 TextOut() 函数的未定义引用?
- 调用 Win32 API 函数时未定义的引用
- 用于C++代码的 API 监视器类型定义 (XML)
- llvm,通过 C++ API 定义字符串和数组
- C++为API中定义的结构创建超类
- 自定义层 API (TensorRT 2.1) 上的简单示例?
- Lua C API 自定义打印函数,在字符串中传递空格时不调用
- 如何将CString转换为使用WCHAR的Windows API和自定义函数?
- 如何在自定义 API 上使用此函数
- 定义外部时未解析的外部符号"struct API Api"
- 如何定义在多个 cpp 文件中使用的接口/API
- Sapera++ API 与 Qt 未定义引用 '_imp__ZN11SapLocation
- Docker远程API JSON模式定义
- 在C API中定义了一个类型,如何将其与命名空间中的C++类相关联
- 如何使用 Windows API 自定义对话框模板的资源
- 使用用户定义的函数对循环/对称值执行Sqlite(C API)和查询(选择)
- Qt-函数的未定义引用-Dante API库
- 用C++MATLAB API定义二维数组
- 如何在 Win32 API 的对话框中显示自定义消息