Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: IAR AVR и инициализация массива объектов
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
alexp74
Добрый день.

Возникла необходимость перенести проект для AVR с AtmelStudio (GCC) на IAR AVR.
Столкнулся с такой проблемой. Нужно инициализировать массив объектов с константным членом внутри. Вроде как правильно это делать в списке инициализации. В GCC нет проблем. Правда студия предупреждает "extended initializer lists only available with -std=c++11 or -std=gnu++11". А как можно в IAR? Кто сталкивался?

Пример кода для AtmelStudio:

Код
class A
{
    private:
    char * const portx;
    
    public:
    A() : portx(0) {};
    A(char * const port) : portx(port) {};
};

class B
{
    private:
    A m_b[2];
    
    public:
    B();
};

char port;
char * const pport = &port;

B::B() : m_b { A(pport), A(pport) }
{
}

int main()
{
    B b();

    return 0;
}
VladimirZ
У Вас константный указатель и его необходимо инициализировать. IAR не виноват.
Непомнящий Евгений
Код
class A
{
    private:
    char * portx;
...
};

B::B() :
{
  m_b[0] = A(pport);
  m_b[1] = A(pport);
}


Например так. Или взять ИАР посовременней, с поддержкой стандарта C++11
shreck
Цитата(Непомнящий Евгений @ Dec 18 2015, 11:14) *
Например так. Или взять ИАР посовременней, с поддержкой стандарта C++11

А такой есть?
Непомнящий Евгений
Цитата(shreck @ Dec 18 2015, 09:01) *
А такой есть?


хз, я на авр-ках сижу на древнем 5.13с, на более новый денег жаль sm.gif
Сергей Борщ
Цитата(alexp74 @ Dec 17 2015, 22:56) *
А как можно в IAR? Кто сталкивался?
А никак. Предыдущий Стандарт допускал при инициализации массива в списке инциализации класса только вызов конструкторов без параметров. Или обходными путями, как Евгений предложил.
alexp74
Цитата(Сергей Борщ @ Dec 18 2015, 09:18) *
А никак. Предыдущий Стандарт допускал при инициализации массива в списке инциализации класса только вызов конструкторов без параметров. Или обходными путями, как Евгений предложил.

Да, согласен. Проще убрать const. Спасибо.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.