如何访问由另一个 API 定义和分配的变量

How to access to a variables defined and assigned by another API

本文关键字:定义 API 分配 变量 另一个 何访问 访问      更新时间:2023-10-16

很抱歉我的新手问题。 但是我正在研究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();