Russian Qt Forum
Ноябрь 23, 2024, 03:51 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Инициализация структуры значениями по умолчанию.  (Прочитано 4512 раз)
rdgtest1
Гость
« : Февраль 12, 2015, 00:43 »

Подскажите, что я делаю не так?
Есть код:

struct A
    {
        int x;
        int y;
    };

struct B
    {
        int x=-1;
        int y=-2;
    };

int main(int argc, char *argv[])
    {
        A a={1,2};  // [1]
        B b={1,2};  // [2]

        return 0;
    }

В случае [1] ошибки нет, в случае [2] - ошибка: ошибка: could not convert '{1, 2}' from '<brace-enclosed initializer list>' to 'B'
         B b={1,2};
                 ^


Поддержка С++11 включена.



Записан
torwig
Самовар
**
Offline Offline

Сообщений: 134



Просмотр профиля
« Ответ #1 : Февраль 12, 2015, 09:50 »

В 5.3 (GCC 4.8.2) ругается.
В 5.4 (студия 2013) тоже ругается.
Видел на stackoverflow что работает в GCC 5.0, но проверить не могу.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #2 : Февраль 12, 2015, 11:56 »

До С++ 11 руки доходят пока редко, но и без него
Код
C++ (Qt)
struct B  {
B() : x(-1), y(-2) {}
};
 
B b = {1, 2};  // ошибка, B имеет конструктор
Просто "так нельзя"
Записан
ViTech
Гипер активный житель
*****
Offline Offline

Сообщений: 858



Просмотр профиля
« Ответ #3 : Февраль 12, 2015, 12:23 »

Гуглите "c++11 initializer list constructor". И ещё "c++ pod initialization" пригодится.
Записан

Пока сам не сделаешь...
_Bers
Бывалый
*****
Offline Offline

Сообщений: 486


Просмотр профиля
« Ответ #4 : Февраль 12, 2015, 16:33 »

Подскажите, что я делаю не так?

Инициализация в сишном стиле не работает для классов,  у которых задействованы списки инициализации
(присутствуют явно, либо объявлены конструкторы)
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.085 секунд. Запросов: 22.