Построение вектора объекта с использованием std::initializer_list [закрыто]C++

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

Сообщение Anonymous »

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

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

class Col {
std::string m_name;

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

void foo(std::initializer_list data) {
std::vector v(data);
}

void bar(std::initializer_list data) {
std::vector v(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++»