У меня есть класс с переменной-членом, которая является std::vector<double>
. Я хотел бы инициализировать это в списке инициализации класса. Я попытался следующий кодКак инициализировать этот вектор-член в C++ 11-стиле?
MyClass::MyClass()
: m_myMemberVector({ 1.0, 2.0 })
{...}
но компилятор интерпретирует это как (itBegin, itEnd)
конструктор std::vector
. Я видел этот вопрос error: ‘double’ is not a class, struct, or union type, который указывает на проблему ввода итератора, но не дает решения.
У меня есть рабочая реализация с использованием BOOST в теле конструктора, но я предпочел бы сделать это в списке инициализации, если это возможно. Есть ли какой-либо элегантный способ построения вектора, содержащего два удвоения с использованием инициализации в стиле 11 + C++?
Звучит как ошибка. Какой компилятор вы используете? –
Вы уверены, что выбран конструктор? Можете ли вы опубликовать код, чтобы доказать это? В любом случае, попробуйте исключить '()', i.e 'm_myMemberVector {1.0, 2.0}'. – juanchopanza
Удалить фигурные скобки 'm_myMemberVector {1.0, 2.0}' – user1810087