Создание вектора объекта с использованием std::initializer_listC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Создание вектора объекта с использованием std::initializer_list

Сообщение Anonymous »

Я пытаюсь инициализировать вектор объекта Col, как показано ниже.

Класс Col создан с использованием одного элемента std::string.
Знаете ли вы, почему приведенный ниже код не компилируется, когда я пытаюсь передать напрямую std::initializer_list в вектор?
Если я создаю вектор объектов с использованием итераторов работает нормально.
class Col {
std::string m_name;

public:
explicit Col( const std::string &any_name )
: m_name( any_name )
{
}
};

void FailingInit(std::initializer_list data ) {
std::vector cols( data ); // does not build
}

void SuccessfulInit(std::initializer_list data ) {
std::vector cols( data.begin(), data.end() );
}

Я использую VS 2022 и компилирую с использованием C++17.
У меня есть ошибка:
error C2665: 'std::vector::vector':
no overloaded function could convert all the argument types

cannot convert argument 1 from 'std::initializer_list' to 'std::initializer_list
with
[
_Ty=Dictionary::Col,
_Alloc=std::allocator
]


Подробнее здесь: https://stackoverflow.com/questions/799 ... lizer-list
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»