【问题标题】:Does the initializer list only accept initializing variables with values of the same type?初始化器列表是否只接受具有相同类型值的初始化变量?
【发布时间】:2018-10-20 03:20:34
【问题描述】:

我有一个带有字符串的类作为成员。我的代码在构造函数的主体中成功地为它分配了一个char

但是,当我尝试使用初始化列表时,它显示了一个令人困惑的错误:“没有构造函数实例”std::basic_string<_elem _traits _alloc>::basic_string [with _Elem=char, _Traits=std::char_traits , _Alloc=std::allocator]" 匹配参数列表"。唉,我不确定我在主题中的假设是真是假。

这是我的实验代码:

class A
{
    string str;
public:
    A(char character);
};

A::A(char character): str(character)
{}

【问题讨论】:

  • 你添加#include &lt;string&gt;了吗?

标签: c++


【解决方案1】:

如果您咨询这样的参考资料:http://www.cplusplus.com/reference/string/string/string/

你会看到没有 std::string 构造函数接受单个字符。然而,有一个构造函数接受一个计数和一个字符,所以你可以这样做:

A::A(char character)
    : str(1, character)

【讨论】:

  • 或者,有一个 operator= 需要一个 char: A::A(char character) { str = character; }
  • @RemyLebeau:这在问题的第二句中已经提到过。
猜你喜欢
  • 2018-08-15
  • 1970-01-01
  • 2021-12-19
  • 2016-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-23
  • 1970-01-01
相关资源
最近更新 更多