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

时间:2014-11-13 23:22:37

标签: c++ qt

抱歉我的新手问题。但我几乎没有在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

2 个答案:

答案 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中调用此UI
FileBrowserMainWindow ui;
//Ui::FileBrowserMainWindow ui;
ui.show();