我正在使用以下代码并且出现错误。我不明白为什么会出现这个错误。
prog.cpp: In function ‘int main()’:
prog.cpp:15:44: error: could not convert ‘{"foo", true}’ from
‘<brace-enclosed initializer list>’ to ‘option’
option x[] = {{"foo", true},{"bar", false}};
^
prog.cpp:15:44: error: could not convert ‘{"bar", false}’ from
‘<brace-enclosed initializer list>’ o ‘option’
这段代码
#include <iostream>
#include <string>
struct option
{
option();
~option();
std::string s;
bool b;
};
option::option() = default;
option::~option() = default;
int main()
{
option x[] = {{"foo", true},{"bar", false}};
}
option
类的封装性。为什么用户必须知道可以这样设置两个成员变量呢?我可以理解像vector<int>
这样的东西,你知道要使用int
来填充对象,但是option
呢?提供适当的构造函数,使得option
由两个值组成显而易见,并且object
的构造函数可以找出如何设置这些值。 - PaulMcKenzie