c++ - 通过引用将变量传递给另一个类

标签 c++ class reference

我试图通过引用传递一个变量到另一个类,但我无法让它工作。

我在主应用程序中创建了一些配置对象,然后当我运行配置对话框时,我想将这个配置对象提供给对话框。

这是我目前所拥有的:

ConfigDialog.h:

class ConfigDialog {

public:
    explicit ConfigDialog(kimai::Config& config, QWidget *parent = 0);

private:
    kimai::Config& config_;
};

ConfigDialog.cpp:

ConfigDialog::ConfigDialog(kimai::Config& config, QWidget *parent) {        
    config_ = config;
    // Do something with config_ - get/set values, etc.
}

当我尝试编译时,出现以下错误:

ConfigDialog.cpp:7: error: C2758: 'ConfigDialog::config_' : must be initialized in constructor base/member initializer list

知道如何解决这个问题吗?

(我尝试将 config_ = config 添加到初始化列表,但这是无效的)

最佳答案

你不能通过赋值来初始化引用,它需要在初始化列表中完成:

ConfigDialog::ConfigDialog(kimai::Config& config, QWidget *parent) : config_(config) {        
    // Do something with config_ - get/set values, etc.
}

config_ = config 赋值是对 config 引用的值的赋值运算符调用到 config_ 引用的变量中, 这是未初始化的。赋值语法仅在与声明结合时才有效:

int y = 5;
int &x = y;    // This works
int &z; z = y; // This does not work!
int w = 4;
x = y;         // This is an assignment to y through a reference

关于c++ - 通过引用将变量传递给另一个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10698913/

相关文章:

java - 从匿名 Java 类改变原始变量的合理方法是什么?

c++ - 使用线程停止一个 Action

c++ - 继承 : Selecting which base class methods to inherit

c++ - 我可以访问超出范围的对象的 Qt 信号/槽吗?

java - 使用 Java Desktop.open( FIle f ) 并知道应用程序已完成

scala - 创建类型敏感函数而不更改父特征或案例类

c++ - QObject模型在QT中为空

javascript - 你如何用 Javascript 编写类?

ruby - ruby 中的变量引用

c# - 如何解决 : System. TypeLoadException?