Описание тега initialization-list

Списки инициализации используются для инициализации членов класса не по умолчанию. Обычно это используется в тех случаях, когда член класса является экземпляром класса.
1 ответ

C++ вызывающая функция в делегате конструктора

В C++11 конструктор может быть перенаправлен другому конструктору в списке инициализации. Это нормально для вызова функции в списке инициализации, как в этом вопросе Также нормально вызывать функцию в делегате конструктора? Я попробовал код, как это…
07 авг '14 в 05:16
0 ответов

FILE*, fopen_s и списки инициализации

У меня есть класс, объявленный так (показаны только соответствующие части): class X { public: X(int x); private: FILE *stream; int _x; } Конструктор открывает файл: X::X(int x) : _x(x) { int err = fopen_s(&stream, "myfile.txt", "w"); fputs("some…
13 ноя '12 в 17:25
2 ответа

Список инициализации C++ игнорирует вызов конструктора родительского класса

В следующем коде построение класса C начинается с инициализации A, затем B1, а затем B2 и, наконец, класса C. Однако при инициализации B1 и B2 отладчик игнорировал инициализацию A(1) и A(2) (которые появляются в списке инициализации B1 и B2 в этом п…
05 окт '13 в 15:13
2 ответа

initializer_list в списке инициализации

Я хочу инициализировать базовый класс с std::initializer_list, struct A : public std::array<int, 4> { // This constructor works fine A() : std::array<int, 4>{{ 1, 2, 3, 4 }} { } // THIS CONSTRUCTOR FAILS TO COMPILE A(std::initializer_lis…
1 ответ

Инициализация члена массива типов в суперклассе с использованием списка инициализации производного класса

Как я могу инициализировать массив, который принадлежит суперклассу? Я хочу установить все значения массива суперкласса в списке инициализации моего подкласса. struct Foo { std::string arr_[3]; Foo(std::string arr[3]) :arr_(arr) { } }; class PersonE…
07 фев '16 в 09:02
2 ответа

В любом случае, чтобы вызвать CoInitialize() перед списком инициализации?

Вот мой C++ код конструктора файла ThorDetectorSwitch.cpp: ThorDetectorSwitch::ThorDetectorSwitch() : _mcSwitch(__uuidof(MCLControlClass)) { _A = WstringToBSTR(L"A"); _B = WstringToBSTR(L"B"); _C = WstringToBSTR(L"C"); _D = WstringToBSTR(L"D"); _dev…
14 июн '13 в 02:35
1 ответ

Почему работает std::string{"const char ptr"}?

Я вижу, что std::string имеет только один CTOR с initializer_list: string (initializer_list<char> il); Так что список инициализатора должен работать с символами, верно? Зачем std::string{"some_str"} работает, он получает const char*, право?
1 ответ

C++ Унаследованные шаблоны классов и списки инициализации

Я конвертировал некоторые из моих математических классов в шаблоны и использовал списки инициализации, и столкнулся с проблемой, когда унаследованный класс должен получить доступ к членам данных базового класса при инициализации. Вот код: template &…
27 янв '11 в 18:06
3 ответа

Инициализировать массив char в списке инициализации конструктора в C++

Это нормально использовать инициализацию, как это? class Foo { public: Foo() : str("str") {} char str[4]; }; И это? int main() { char str[4]("str"); } Оба дают мне ошибку в GCC 4.7.2: ошибка: массив используется как инициализатор Comeau компилирует …
03 ноя '12 в 06:08
3 ответа

Понимание конструктора C++

Рассмотрим этот конструктор: Packet() : bits_(0), datalen_(0), next_(0) {} Обратите внимание, что bits_, datalen_ а также next_ поля в пакете класса определены следующим образом: u_char* bits_; u_int datalen_; Packet* next_; Что означает эта часть к…
9 ответов

C++ - запустить функцию перед инициализацией члена класса

У меня есть 2 класса управления ресурсами DeviceContext а также OpenGLContext оба являются членами class DisplayOpenGL, Время жизни ресурса связано с DisplayOpenGL, Инициализация выглядит следующим образом (псевдокод): DeviceContext m_device = Devic…
1 ответ

Когда список инициализации ищется в C++

Я пытаюсь понять, когда на список инициализации ссылаются (участвуют) во время создания экземпляра не статического члена базового класса и класса. Я прочитал эту статью и эту статью, которая суммирует порядок инициализации класса (я суммировал это з…
21 май '17 в 07:53
5 ответов

Обязательно ли определять список инициализации в заголовочном файле?

Недавно я создал класс Square: ========= Заголовочный файл ====== class Square { int m_row; int m_col; public: Square(int row, int col): m_row(row), m_col(col) }; ========== cpp file ====== #include "Square.h" Square::Square(int row, int col) { cout…
11 мар '13 в 09:35
5 ответов

C++: инициализация унаследованного поля

У меня есть вопрос об инициализации унаследованных членов в конструкторе производного класса. Пример кода: class A { public: int m_int; }; class B: public A { public: B():m_int(0){} }; Этот код дает мне следующий вывод: In constructor 'B::B()': Line…
21 окт '10 в 04:11
1 ответ

Выражения класса constexpr в списках инициализаторов

Следующий код не может связаться с g++ 4.8.2: #include <map> struct Foo { constexpr static int foo = 1; }; static std::map<int, int> map {{1, Foo::foo}}; int main() { return Foo::foo; } Я получаю следующую ошибку: g++ -std=c++11 -o foo f…
12 дек '13 в 18:03
2 ответа

C++: передача const *p в списке инициализации

Что я хотел бы сделать, это передать const ListeBase<int> *pListe в моем инициализаторе члена, как то, что в моем.cxx, но он дает мне ошибку, говоря, что он не может конвертировать из 'const' в 'not const' Я знаю, что мог бы пройти без использ…
03 мар '16 в 17:58
3 ответа

Списки инициализации в конструкторе

Я слышал, что преимущество использования списков инициализации в конструкторе заключается в том, что не будет лишних копий объектов типа класса. Но что это значит для следующего кода в конструкторе класса T? Если я прокомментирую назначение и исполь…
10 сен '11 в 20:42
1 ответ

Uncrustify: список инициализации: начинается с запятой

Я хотел бы автоматически заархивировать следующую структуру кода с помощью Uncrustify: Class(int aArg1, int aArg2, int aArg3) : BaseClass(aArg1) , iMember1(aArg1) , iMember2(aArg2) { } Я пробовал Uncrustify версия: 0.63: pos_constr_comma = lead_forc…
29 сен '16 в 18:48
3 ответа

Элемент массива с нулевой инициализацией в списке инициализации

У меня есть класс с членом массива, который я хотел бы инициализировать для всех нулей. class X { private: int m_array[10]; }; Для локальной переменной существует простой способ инициализации нуля (см. Здесь): int myArray[10] = {}; Также ученик m_ar…
3 ответа

Как создать вектор с уникальными значениями?

У меня есть этот пример для генерации уникальных объектов в вектор: #include <iostream> #include <vector> #include <algorithm> int v=0; struct A { A() : refValue( v++) { std::cout<<"constructor refValue="<<refValue<&…
28 июл '11 в 07:14