Массив структур, содержащих функции в качестве членов C ++ - PullRequest
0 голосов
/ 26 сентября 2018

Мне нужен массив структур, который будет использоваться для рисования элементов экрана на основе выбранной точки (которая является просто числом).

В основном меня интересуетправильный синтаксис объявления структуры с указателями на функции в качестве членов, создания массива с элементами этого типа структуры и передачи аргументов этим функциям.Что-то вроде приведенного ниже кода, но с правильным синтаксисом.

struct menuStruct 
{
   void *leftEdgeSymbol(boolean show);
   void *certerScreenSymbol(boolean show);
   void *rightEdgeSymbol(boolean show);
   void *buttonFunction(void);
}; 


menuStruct allMenues[] = 
{
  {drawLeftArrow(), drawTempSettingText(), drawRightArrow(), mainMenu1()},  //0
  {eraseLeftArrow(), drawHumidTargetText(), drawRightArrow(), mainMenu2()},  //1
  {drawLeftMinusSign(), drawSetTempTarget(), drawRightPlusSign(), subMenu101()  //2
}




void drawLeftArrow(boolean show)
{
 //Draw the arrow with white colour to show or with black to erase 
}

void rightArrow(boolean show)
{
 //Draw the arrow with white colour to show or with black to erase 
}

1 Ответ

0 голосов
/ 26 сентября 2018

Синтаксис будет

struct menuStruct 
{
   void (*leftEdgeSymbol)(bool);
   void (*certerScreenSymbol)(bool);
   void (*rightEdgeSymbol)(bool);
   void (*buttonFunction)();
}; 

void drawLeftArrow(bool show)
{
     //Draw the arrow with white colour to show or with black to erase 
}

void rightArrow(bool show);

// ...

menuStruct allMenues[] = 
{
  {&drawLeftArrow, &drawTempSettingText, &drawRightArrow, &mainMenu1},  //0
  {&eraseLeftArrow, &drawHumidTargetText, &drawRightArrow, &mainMenu2},  //1
  {&drawLeftMinusSign, &drawSetTempTarget, &drawRightPlusSign, &subMenu101}  //2
}

и возможное использование:

allMenues[1].rightEdgeSymbol(false);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...