在Arduino项目中通过指针从指定类调用非静态方法

在Arduino项目中通过指针从指定类调用非静态方法,arduino,arduino-c++,Arduino,Arduino C++,我正在开发一个Arduino项目,需要使用LCD屏幕和动态变化的菜单数量。在VS2019中使用Arduino扩展,我创建了一个菜单类,其中包含一个结构列表(MenuItem),该结构有两个变量:菜单项名称(menuFunctionName)和一个指向函数调用的指针(UI::*menuFunctionCall)(int x),当选择该菜单项时,该函数调用将一个int作为参数。我需要在一个名为UI的类中创建方法,然后该类将附加到此列表,从而形成一个菜单 菜单类的一部分: class UI; cl

我正在开发一个Arduino项目,需要使用LCD屏幕和动态变化的菜单数量。在VS2019中使用Arduino扩展,我创建了一个菜单类,其中包含一个结构列表(MenuItem),该结构有两个变量:菜单项名称(menuFunctionName)和一个指向函数调用的指针(UI::*menuFunctionCall)(int x),当选择该菜单项时,该函数调用将一个int作为参数。我需要在一个名为UI的类中创建方法,然后该类将附加到此列表,从而形成一个菜单

菜单类的一部分:

class UI; 

class Menu
{
public:
    struct MenuItem
    {
        void (UI::*menuFunctionCall)(int x);
        char menuFunctionName[30];
    };
    
    virtual void addMenuItem(void (UI::*menuFunction)(int x),const char* menuName);
    
protected:
    MenuItem* p_menuItems; //addMenuItem populates this 
    
};
在UI类中,我有一个从Menu(m_main Menu)派生的成员,它通过addMenuItem添加项。到目前为止,我可以成功地将项添加到列表中,该列表包括对UI内部方法的调用和一些名称

...//How MaineMenu gets made
class MainMenu final: public Menu
{};
...

//how UI gets made
#include "MainMenu.h"
class UI 
{
private:
     MainMenu m_mainMenu;
     void mainBtnPress(int x);
    
};
...//Inside it's constructor
UI::UI()
{
    m_mainMenu = MainMenu(p_joy, p_display);
    m_mainMenu.addMenuItem(&UI::mainBtnPress, "x"); //This works OK
}
我面临的问题是调用一个存储的指针指向一个方法。现在我在p_菜单项中有一个列表,我正试图从主菜单调用它。因此,menuFunctionCall是列表中存储在位置[0]的指针,XXX是要传递给它的某个int值

MainMenu::DoSomething()
{
    (&UI::*p_menuItems[0].menuFunctionCall, XXX);
}
编译时,我收到“在“*”标记之前预期的非限定id”。由于这是一个Arduino项目,我必须使用的内存有限,因此std::function或其他类似库太大,无法使用。我确信这只是一个语法错误