Brace-Initialization – вопросы и ответы

70
голосов
1
ответ
В этом коде: #include <array> #include <cstdint> struct K { std::array<char, 4> a; std::uint8_t b; }; const K k1 = { {'T', 'e', 's', 't'}, 1 }; class X { const K k2 = { {'A', 'b',...
5 месяцев, 3 недели назад aschepler
119
голосов
1
ответ
Каково влияние обертывания списка инициализаторов внутри скобок? Это просто другая форма для инициализации списка или работает ли она только в определенных сценариях? Например, рассмотрим a : struc...
5 месяцев, 3 недели назад Raginator
89
голосов
1
ответ
Вот мой код: #include <string> struct A { int a; std::string sa; }; int main() { A arr[3]{}; } Когда я скомпилирую его с gcc 4.8.2 (на Ubuntu 14.04) с опцией -std=gnu++11 , я получаю следующу...
5 месяцев, 3 недели назад kiokko89
57
голосов
1
ответ
У меня есть следующий код: class A { public: A(std::vector<std::shared_ptr<int>>){} }; auto x = std::make_shared<int>(0); auto y = std::make_shared<int>(1); auto list = {x, ...
5 месяцев, 4 недели назад Ghita
70
голосов
1
ответ
Я исхожу из Javascript как язык, где я могу выполнять такие функции. function tween(obj, tweenParams, time, tweenOptions); Это используется как: tween(mySprite, {x: 10, y: 10}, 1, {startDelay: 1, l...
6 месяцев, 1 неделя назад Jeru Sanders
98
голосов
2
ответа
#include <array> int main() { struct A { unsigned char l; std::array<char, 12> c; }; const A a = {1, "t"}; // OK const A& ar = {1, "t"}; // error: invalid initialization of referenc...
6 месяцев, 1 неделя назад haelix
90
голосов
1
ответ
Пожалуйста, рассмотрите этот бит кода: #include <iostream> int main() { struct A { int x; int y; int z; int foo() { std::cout << "enter foo: " << this->x << "," << ...
6 месяцев, 2 недели назад Killzone Kid
91
голос
1
ответ
Я рассматриваю возможность реорганизации базы данных среднего размера, всегда используя функцию скобки. Есть ли проблемы с эффективностью, о которых я должен знать? Несколько примеров могут быть ти...
6 месяцев, 3 недели назад EddieV223
119
голосов
2
ответа
Почему компилятор (clang, gcc) не предупреждает о сужении конверсий при выполнении этого float a{3.1231231241234123512354123512341235123541235}; float a = {double(3.12312312412341235123541235123412...
3 года, 10 месяцев назад Gabriel
80
голосов
2
ответа
Почему следующий код является незаконным? for (int index=0; index<3; index++) { cout << {123, 456, 789}[index]; } Пока это прекрасно работает: for (int value : {123, 456, 789}) { cout <...
5 лет назад StilesCrisis
57
голосов
1
ответ
Если я попытаюсь скомпилировать class triangle { private: std::array<std::array<double, 2>, 3> m_vertices; }; triangle const unit_triangle{ { { { 0, 0 }, { 1, 0 }, { 0, 1 } } } }; Я пол...
3 года, 6 месяцев назад 0xbadf00d
190
голосов
1
ответ
Рассмотрим следующий фрагмент кода: #include <iostream> struct A { A() {} A(const A&) {} }; struct B { B(const A&) {} }; void f(const A&) { std::cout << "A" << std::en...
1 год, 7 месяцев назад user1494080
70
голосов
1
ответ
Я создал класс Matrix с конструктором этого типа: Matrix<T>(const vector<vector<T>> &m) Если я это сделаю, я могу Matrix объект Matrix : vector<vector<double>> a_v...
3 года назад Andrea993
58
голосов
0
ответов
Я пытаюсь инициализировать вектор общих указателей на базовый класс с помощью нескольких общих указателей на производный класс, используя инициализацию скобки. Код (после удаления ненужных деталей)...
6 лет, 5 месяцев назад quant_dev
57
голосов
1
ответ
Хотя я думаю, что это не будет хорошей практикой, компиляторы, которые я использую (как GNU, так и clang), похоже, позволяют сделать что-то вроде следующего int f() {return 11;} class A { int a = f...
5 лет, 5 месяцев назад GSi
105
голосов
2
ответа
Предположим, что у вас есть класс под названием Product, определенный следующим образом: class Product { public: Product(const char *name, int i); Product(Product &&rhs); Product(const Prod...
5 лет, 2 месяца назад Patrick
105
голосов
3
ответа
Данный код: struct Test { int a = 1; int b = 2; }; Test test1; Test test2{}; В test2 я уверен, что test2.a == 1 и test2.b == 2 . Гарантировано ли это (или нет) для test1 (без {} )?
3 года, 5 месяцев назад vladon
70
голосов
1
ответ
Я разрабатываю структуру данных, способную описать семантику некоторых файлов XML в C++. Идея состоит в проверке присутствия и/или правильной последовательности различных элементов при сохранении т...
6 лет, 1 месяц назад pmendl
81
голос
2
ответа
Я пытался сделать свой код менее раздутым при работе с API окон, заменив двухстрочные символы, не похожие на TEMP t{0,1,2}; // let say it struct TEMP {int a; int b; int c} SomeVeryVerboseFunctionNa...
5 лет, 2 месяца назад sunny moon
57
голосов
2
ответа
Я хочу, чтобы следующий код выводил "test" вместо "X" для случая, когда используется std::string используя ту же инициализацию, что и другие базовые типы. std::string теперь вызывает конструктор с ...
6 лет, 1 месяц назад risingDarkness
56
голосов
1
ответ
Скажем, у меня есть эта структура: struct MyStruct { int field1; char *field2; MyStruct(int a, char* b): field2(b) { field1 = doStuff(a); } MyStruct(int a): MyStruct(a, nullptr) {} ~MyStruct(); } Н...
3 года, 1 месяц назад Fylax
56
голосов
1
ответ
CEvent имеет единственный explicit конструктор, который принимает от нуля до четырех необязательных аргументов. Есть ли способ инициализировать его как члена в объявлении класса? FooBar вообще не н...
3 года назад Frank Heimes
79
голосов
2
ответа
Рассмотрим следующее определение класса: class A { }; То есть, A - это класс без членов данных (хотя он также не имеет членов функции). Следующий код работает должным образом, потому что компилятор...
3 года, 2 месяца назад ネロク
81
голос
0
ответов
Конструкцию void() можно использовать для "создания значения типа void " (странно, но верно). Но синтаксис инициализации С++ 11 + с фигурными фигурными скобками не работает в этом случае: int f_int...
2 года, 11 месяцев назад Constructor
58
голосов
0
ответов
Можно ли передать точный бит-init-list в std::array constructor? Это может быть необходимо, поскольку std::array не поддерживает назначение списка инициализаторов. Попытка адаптировать принятый отв...
3 года, 10 месяцев назад gaazkam
71
голос
1
ответ
В следующем коде struct BinaryNode { int val; BinaryNode *leftchild, *rightchild; }; struct NaryNode { int val; std::vector<NaryNode*> children; }; Я могу инициализировать первую структуру ка...
7 лет, 2 месяца назад agam
81
голос
2
ответа
Почему не компилируется следующий код: #include <array> struct A { std::array<size_t, 5> i_; A() {} A( A const& a) : i_{ a.i_ } {} }; int main() { A a1; A a2 = a1; return 0; } GCC 4...
6 лет, 11 месяцев назад user2052436
124
голоса
1
ответ
Я регистрировал ошибку GCC для этого, но я предпочел бы дважды проверить это. Рассмотрим следующие программы: #include <utility> template<typename T, typename A> void F(A&& a) {...
3 года, 11 месяцев назад alecov
58
голосов
1
ответ
В то время как я читаю page93 $5.1.2 стандарта С++ 11, в течение которого он сказал, что в этом случае вы можете использовать список бит-init-list: auto x = [] {return {1,2}};//ошибка: список с при...
7 лет, 1 месяц назад guuerpw
126
голосов
2
ответа
Я пытаюсь написать класс, основанный на математических векторах: template <unsigned N> class Vector{ public: Vector() = default; Vector(std::initializer_list<double> li) { *this = li;} ...
4 года, 10 месяцев назад AntiElephant
56
голосов
2
ответа
Рассмотрим следующий примерный пример кода: using matrix_t = double[2][2]; constexpr matrix_t zero_matrix = { {0.0, 0.0}, {0.0, 0.0} }; constexpr matrix_t identity_matrix = { {1.0, 0.0}, {0.0, 1.0}...
3 года, 4 месяца назад Adam Badura
136
голосов
2
ответа
Проверьте эту простую программу: int main() { float f2 = 7.2; // OK, with warning float f3 = 7.199999809265137; // OK, no warning float f4{ 7.2 }; // Fails float f5{ 7.199999809265137 }; // OK, no ...
4 года, 2 месяца назад nneonneo
57
голосов
2
ответа
Я хотел бы иметь тип, который представляет собой просто список объектов, которые могут быть получены из некоторого базового класса. То есть, вызывающий получает список Stuff или MoreStuff (который ...
2 года, 9 месяцев назад Tanktalus
105
голосов
1
ответ
В GCC 4.6.1, когда я объявляю экземпляр моего собственного типа, который имеет конструктор по умолчанию, и если я создаю экземпляр объекта этого типа и инициализирую его с помощью фигурных скобок (...
7 лет назад Brandon
100
голосов
1
ответ
Я пытаюсь инициализировать объекты типа: template<typename T> struct thing : std::array<std::array<T, 2>, 2> { }; thing<int> t1 {{ {1,2}, {3,4} }}; Я получаю: error: no matc...
6 лет, 1 месяц назад emsr
70
голосов
1
ответ
Можно ли изменить эту инициализацию С++ 11: const std::map<int, std::map<int, std::string>> test = {{1, {{1, "bla"}, {2, "blie"} } }, {3, {{1, "ha"}, {2, "hie"} } } }; В какой-то форме ...
8 лет назад rubenvb
98
голосов
1
ответ
Итак, я знаю, что фигурные скобки в коде могут означать больше, чем просто initializer_list : Что такое закрытый список фигурных скобок Если не список intializer? Но что они должны по умолчанию? На...
4 года, 1 месяц назад Jonathan Mee
81
голос
2
ответа
Следующий фрагмент кода печатает 0 , скомпилированный с помощью vС++ и prints 1 , скомпилированный с помощью g++ или clang++ : #include <iostream> #inc
4 года, 1 месяц назад Constructor
56
голосов
1
ответ
Следующий код не компилируется с использованием Visual Studio 2013. Он компилируется с использованием Xcode 6.1 (Clang 3.5). std::string s1("one"); std::string s2("two"); std::string s3("three"); s...
5 лет, 4 месяца назад ksl
Ищете еще? Найдите вопросы с помощью поисковой формы вверху страницы или с помощью рубрикатора, помогите ответить на вопросы без ответа.
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема