无法从"<大括号括起来的初始值设定项列表>转换为
Could not convert from '<brace-enclosed initializer list> to
我知道有很多类似的问题,但我看到了它们,但没有一个帮助我,我认为这是因为我的有点不同,同时又很奇怪。
我提出了另一个问题,一个成员回答了我,但他没有使用类,而是使用了结构体。 它运行良好,但是当我尝试使用相同的逻辑将其作为类时,就会发生这种情况,错误:
错误:无法将"{{"foo"、"bar"}}"从"<大括号括起来的初始值设定项列表>"转换为"B"大括号括起来的初始值设定项列表>
我试过了,但我不知道发生了什么。
#include <iostream>
#include <map>
class A
{
public:
A() {}
A(const std::string & input) : data(input) {}
private:
std::string data;
};
class B
{
public:
B();
B(std::initializer_list<std::pair<std::string, A>> input) : container(begin(input), end(input)) {}
private:
std::map<std::string, A> container;
};
int main( int argc, char ** argv )
{
B b = {
{"foo", "bar"}
};
return 0;
}
还有这里成员的答案:Ideone
谢谢大家。
你必须像这样初始化'b':
B b = {
{ "foo", A{"bar"} }
};
因为 {"foo", "bar"} 的类型是 {string, string} 而不是 {string, A}
相关文章:
- 为什么我会收到此错误?无法将 {lb, ub} 从<大括号括起来的初始值设定项列表>转换为 float(**)(float*, int)
- 无法从"初始值设定项列表"转换为模板<int>
- 类型映射资源并将列表转换为矢量(并返回)
- 标准::列表转换和复制
- 错误 C2440:"正在初始化":无法从"初始值设定项列表"转换为"std::vector<char *,std::分配器<_Ty>>
- C 函数错误 - 无法将支撑封闭的初始化器列表转换为char*
- 如何将 uint8 列表转换为其相应的有符号值
- 无法从大括号括起来的初始值设定项列表转换
- 如何将边缘列表转换为DCEL数据结构
- 使用类继承将单个喜欢的列表转换为双向链表
- 如何在C++中将边列表转换为邻接矩阵,其中包含连接到顶点的边数而不是一条边?
- 基于字符串的数组,char列表转换
- 增强HANA编译时列表转换
- 是否可以使用元编程将类型列表转换为对列表中每种类型具有特定隐式转换行为的新类型?
- 无法从"<大括号括起来的初始值设定项列表>转换为
- 无法从<大括号括起来的初始值设定项列表转换>
- 自动将派生类的指针列表转换为基类的指针列表
- 将子类列表转换为超类列表
- 如何在生成文件中将.png列表转换为 pdf 列表
- 用C++将列表转换为对象的二维数组