错误:构造函数必须显式初始化引用成员

JCVegaO

我有以下文件:

#include <iostream>

using namespace std;

namespace CarLibrary { 

  class Car   {
    private:
      string& _producer; 
      string& _model;
      string& _color;

    public:
      Car(const string& producer,
          const string& model,
          const string& color);  

      string Show();

  };

car.cpp

#include "car.h"

namespace CarLibrary {

Car::Car(const string& producer,
         const string& model,
         const string& color)
{  
    _producer = producer;
    _model = model;
    _color = color;
}

string Car::Show()
{
    return _model + " (" + _producer + "): color " + _color ;
}

}

我收到这些错误:

C:... \ car.cpp:5:错误:'CarLibrary :: Car'的构造函数必须显式初始化引用成员'_producer'

C:.. \ car.cpp:5:错误:'CarLibrary :: Car'的构造函数必须显式初始化引用成员'_model'

C:... \ car.cpp:5:错误:'CarLibrary :: Car'的构造函数必须显式初始化引用成员'_color'

我正在观看视频讲座,重复教授的工作,但奇怪的是,即使我只是复制完全相同的代码,教授也没有出现任何错误。知道有什么问题吗?

泰德·林格莫

必须将引用初始化为引用某些内容。

在创建引用之后,您可以在此处尝试分配这些引用。那是不合法的:

Car::Car(const string& producer,
         const string& model,
         const string& color)
{  
    _producer = producer;
    _model = model;
    _color = color;
}

解决方案是使用成员初始化器列表:

Car::Car(const string& producer,
         const string& model,
         const string& color) : // colon indicates the start of the member init list
    _producer(producer),
    _model(model),
    _color(color)
{
    // constructor body - now empty
}

注意:要使此方法起作用,您的成员引用变量也必须为const参考成员通常不是您想要的。我建议将它们设置为正常值std::string

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

错误:构造函数必须显式初始化引用成员

来自分类Dev

类组合构造函数d必须显式初始化引用成员

来自分类Dev

为什么显式声明的构造函数阻止使用C ++ 11初始化列表进行成员初始化?

来自分类Dev

为什么显式声明的构造函数阻止使用C ++ 11初始化列表进行成员初始化?

来自分类Dev

用错误初始化构造函数中的成员

来自分类Dev

在复制初始化中,对复制构造函数的调用是显式还是隐式的?

来自分类Dev

显式拷贝构造函数和统一初始化

来自分类Dev

显式构造函数和std :: initializer_list初始化

来自分类Dev

具有显式构造函数的不可复制类型的C ++ 11数组初始化

来自分类Dev

C ++ 11:带“ = {}”的类内初始化不适用于显式构造函数

来自分类Dev

复制初始化和显式构造函数-编译器差异

来自分类Dev

我是否需要在构造函数中显式初始化std :: unique_ptr?

来自分类Dev

为什么在调用构造函数之前进行显式初始化

来自分类Dev

如何为显式重载的构造函数启用副本初始化?

来自分类Dev

为什么在具有主构造函数的记录中需要显式的“ this”构造函数初始化器?

来自分类Dev

用已删除的副本构造函数初始化const引用成员

来自分类Dev

C++在初始化类实例时隐式调用类成员的构造函数

来自分类Dev

错误:非常量静态数据成员必须初始化

来自分类Dev

每个构造函数成员初始化器列表初始化const数据成员,错误:没有匹配的调用函数

来自分类Dev

空且默认的构造函数和成员初始化

来自分类Dev

构造函数中初始化嵌套成员的语法?

来自分类Dev

C ++成员初始化和构造函数

来自分类Dev

复制构造函数是否重新初始化文件成员

来自分类Dev

非原始成员初始化中的复制构造函数

来自分类Dev

初始化 const 成员并使用父构造函数

来自分类Dev

c ++构造函数成员初始化:传递参数

来自分类Dev

即使在构造函数中初始化后,SelectList也会引发“未设置对象引用”错误

来自分类Dev

综合默认构造函数如何初始化已初始化的类成员?

来自分类Dev

使用构造函数语法初始化引用

Related 相关文章

  1. 1

    错误:构造函数必须显式初始化引用成员

  2. 2

    类组合构造函数d必须显式初始化引用成员

  3. 3

    为什么显式声明的构造函数阻止使用C ++ 11初始化列表进行成员初始化?

  4. 4

    为什么显式声明的构造函数阻止使用C ++ 11初始化列表进行成员初始化?

  5. 5

    用错误初始化构造函数中的成员

  6. 6

    在复制初始化中,对复制构造函数的调用是显式还是隐式的?

  7. 7

    显式拷贝构造函数和统一初始化

  8. 8

    显式构造函数和std :: initializer_list初始化

  9. 9

    具有显式构造函数的不可复制类型的C ++ 11数组初始化

  10. 10

    C ++ 11:带“ = {}”的类内初始化不适用于显式构造函数

  11. 11

    复制初始化和显式构造函数-编译器差异

  12. 12

    我是否需要在构造函数中显式初始化std :: unique_ptr?

  13. 13

    为什么在调用构造函数之前进行显式初始化

  14. 14

    如何为显式重载的构造函数启用副本初始化?

  15. 15

    为什么在具有主构造函数的记录中需要显式的“ this”构造函数初始化器?

  16. 16

    用已删除的副本构造函数初始化const引用成员

  17. 17

    C++在初始化类实例时隐式调用类成员的构造函数

  18. 18

    错误:非常量静态数据成员必须初始化

  19. 19

    每个构造函数成员初始化器列表初始化const数据成员,错误:没有匹配的调用函数

  20. 20

    空且默认的构造函数和成员初始化

  21. 21

    构造函数中初始化嵌套成员的语法?

  22. 22

    C ++成员初始化和构造函数

  23. 23

    复制构造函数是否重新初始化文件成员

  24. 24

    非原始成员初始化中的复制构造函数

  25. 25

    初始化 const 成员并使用父构造函数

  26. 26

    c ++构造函数成员初始化:传递参数

  27. 27

    即使在构造函数中初始化后,SelectList也会引发“未设置对象引用”错误

  28. 28

    综合默认构造函数如何初始化已初始化的类成员?

  29. 29

    使用构造函数语法初始化引用

热门标签

归档