Описание тега 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…
13 апр '14 в 01:26
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*, право?
23 окт '15 в 08:52
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_; Что означает эта часть к…
05 апр '12 в 11:13
9
ответов
C++ - запустить функцию перед инициализацией члена класса
У меня есть 2 класса управления ресурсами DeviceContext а также OpenGLContext оба являются членами class DisplayOpenGL, Время жизни ресурса связано с DisplayOpenGL, Инициализация выглядит следующим образом (псевдокод): DeviceContext m_device = Devic…
09 ноя '12 в 15:43
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…
09 дек '14 в 15:01
3
ответа
Как создать вектор с уникальными значениями?
У меня есть этот пример для генерации уникальных объектов в вектор: #include <iostream> #include <vector> #include <algorithm> int v=0; struct A { A() : refValue( v++) { std::cout<<"constructor refValue="<<refValue<&…
28 июл '11 в 07:14