Возможно ли в Arduino IDE создать массив из структур внутри класса, размер массива заранее неизвестен.

gms
Offline
Зарегистрирован: 19.03.2019

Возможно ли в Arduino IDE создать массив из структур внутри класса, размер массива заранее неизвестен?

Выдает ошибку:
error: invalid use of non-static data member 'TMenu::items'
 
 
 
struct TMenuItem {  // 

bool edit;

bool focus;
bool editable;
String itemname;
};
 
class TMenu {
 
public:
 
boolean enable;    
 
private:
word items;
TMenuItem MenuItems [items];  <--------------------------------
};
 

 

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Можно , но не всем. А только тем кто овладел навыком чтения и поиска в гугле . А остальным уже ничто(или никто) не поможет . http://netlib.narod.ru/library/book0003/ch06_05.htm

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

А причем тут ардуино ИДЕ и структуры ?  Это во всем срр виноват. Тебе же написали англицким по белому, мол невозможно не статик создать. Создай статик.

gms
Offline
Зарегистрирован: 19.03.2019

Спасибо за ответы, ткните носом как создать "статик". Или может можно создать пустой массив, а потом задать его длину ? Обкопал пол инета везде голимые примеры массивами извесной длины. 

p.s. В с++ ниразу не силён, последний раз было 20 лет назад, ASM и Pascal.  

ЕвгенийП
ЕвгенийП аватар
Онлайн
Зарегистрирован: 25.05.2015

gms пишет:
В с++ ниразу не силён
Прокачивайте. Так просто тыкать без толку.

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Ну вот как может быть статик массив с изменяемым размером ? :)

Вы пытаетесь сделать то, что без начальных знаний сделать не возможно. Либо выберите массив заведомо большего размера, чем планируете использовать в классе, либо выделяйте память каждый раз когда изменяется размер массива, но о самом правильном способе говорит квон - связные списки, но для этого нужно прочитать статью и вникнуть :) 

Ну или вот с картинками:

http://itnotesblog.ru/note.php?id=178

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

самое простое

в обьявлении класса: 

mystruct_t  *Items;     // mystruct_t - тип структура

потом в канструкторе 

Items = new mystruct_t[N]  // теперь в Items - массив структур размером N (или 0, если памяти мало)

и в деструкторе (не)обязательно

delete[] Items;