Добрый день!
Есть класс:
class Value
{
public:
Value();
Value(const std::string& value);
Value(std::string&& value);
Value(int value);
Value(double value);
Value(bool value);
Value(const Array& value);
Value(Array&& value);
Value(const Value& rhs);
~Value();
};
И есть другой класс:
class Array
{
public:
Array(const std::initializer_list<Value>& values);
};
Если записать вот так:
Array a1({"one", "two", "three"});
Array a2({1, 2, 3, 4, 5, 6, 7, 8, 9, 10});
Array a3({1.1, 1.2, 1.3, 1.4});
Array a4({true, false, true, false});
Value v1({"one", "two", "three"});
Value v2({1, 2, 3, 4, 5, 6, 7, 8, 9, 10});
Value v3({1.1, 1.2, 1.3, 1.4});
Value v4({true, false, true, false});
Изменил класс Value так:
class Value
{
public:
Value();
explicit Value(const std::string& value);
explicit Value(std::string&& value);
explicit Value(int value);
explicit Value(double value);
explicit Value(bool value);
explicit Value(const Array& value);
explicit Value(Array&& value);
explicit Value(const Value& rhs);
~Value();
};
Это привело к тому, что все перестало компилироваться: выдается сообщение: error: no matching function for call to ‘Array::Array(<brace-enclosed initializer list>)’.
В чем может быть проблема?