调用在类中声明的结构成员

我正在尝试将函数放置在结构的内部,该结构是类的一部分(在此处称为菜单),因此我可以在专用的安装cpp文件中修改结构(我正在尝试这样做,以便可以修改所有功能我希望在应用程序中使用一个源文件,而不是更改所有cpp文件中的内容):

// Menu.h
class menu
{
  public:
  menu();

 struct pages
  {
   void print_page_1();
   void print_page_2();
  };
};

    // Setup.cpp
struct menu::pages
{

    void print_page_1()
    {
       ...
    }
    void print_page_2()
    {
       ...
    }
};

然后,当我尝试在我的结构中调用一个函数时,我得到一个错误:

int main()
{
menu myMenu();
myMenu.pages.print_page_1(); // error: type name is not allowed
}

此错误是什么意思,我该如何避免呢? 谢谢!

评论
美丽的另一端
美丽的另一端

Your functions must be static to be available elsewhere, such as inside main. (similar to Java classes)

点赞
评论
isit
isit

The methods in the pages are not class methods i.e. not static so they cannot be called using struct name.

Make them static:

struct pages
{
    static void print_page_1();
    static void print_page_2();
};

而且,您可以致电:

myMenu.pages.print_page_1();

Otherwise, you have to create an object of pages and then use that object to call its methods.

点赞
评论