Вопросы с тегом «aggregate-initialization»

6
Инициализация массива членов в инициализаторе конструктора
class C { public: C() : arr({1,2,3}) //doesn't compile {} /* C() : arr{1,2,3} //doesn't compile either {} */ private: int arr[3]; }; Я считаю, что причина в том, что массивы можно инициализировать только с помощью = синтаксиса, а именно: int arr[3] = {1,3,4}; Вопросы Как я могу делать то, …

3
Когда частный конструктор не является частным конструктором?
Допустим, у меня есть тип, и я хочу сделать его конструктор по умолчанию закрытым. Я пишу следующее: class C { C() = default; }; int main() { C c; // error: C::C() is private within this context (g++) // error: calling a private constructor of class 'C' (clang++) // error …

8
Сужающие преобразования в C ++ 0x. Это только у меня, или это похоже на переломную ситуацию?
C ++ 0x сделает следующий код и аналогичный код некорректным, поскольку он требует так называемого сужающего преобразования a doubleв a int. int a[] = { 1.0 }; Мне интересно, часто ли этот вид инициализации используется в реальном коде. Сколько кода будет нарушено этим изменением? Сложно ли исправить это в вашем …

5
Можно ли предотвратить пропуск элементов инициализации агрегата?
У меня есть структура со многими членами одного типа, как это struct VariablePointers { VariablePtr active; VariablePtr wasactive; VariablePtr filename; }; Проблема в том, что если я забуду инициализировать один из членов структуры (например wasactive), например: VariablePointers{activePtr, filename} Компилятор не будет жаловаться на это, но у меня будет один объект, …

4
Скрыть пустой базовый класс для агрегатной инициализации
Рассмотрим следующий код: struct A { // No data members //... }; template<typename T, size_t N> struct B : A { T data[N]; } Вот как вы должны инициализировать B: B<int, 3> b = { {}, {1, 2, 3} }; я хочу избежать ненужного пустого {} для базового класса. Существует …
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.