调用在类中声明的结构成员
calling a struct member declared in a class
我正在尝试将函数放置在作为类一部分的struct
中(此处名为menu
(,以便我可以修改专用安装程序 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
}
此错误是什么意思,如何避免它? 谢谢!
pages
是struct
的名称,它不是一个对象。您需要在menu
中有一个类型pages
的对象。
否则,您可以在pages
中static
方法,并在不创建对象的情况下调用这些方法。
示例(实时(:
#include <iostream>
struct S
{
struct P
{
void print()
{
std::cout << "Hello from P!n";
}
} p; // object of P
struct Q
{
static void print()
{
std::cout << "Hello from Q!n";
}
};
};
int main()
{
S s;
s.p.print();
S::Q::print();
return 0;
}
输出:
Hello from P!
Hello from Q!
你需要在菜单中声明一个页面对象。
#include <iostream>
class menu
{
std::string p1 = "1";
std::string p2 = "2";
public:
struct pages
{
menu& m;
pages(menu &m):m(m){
}
void print_page_1();
void print_page_2();
} pages;
menu():pages(*this){
}
};
void menu::pages::print_page_1()
{
std::cout << m.p1;// ...
}
void menu::pages::print_page_2()
{
std::cout << m.p2;// ...
}
int main() {
menu myMenu;
myMenu.pages.print_page_1();
// your code goes here
return 0;
}
相关文章:
- 具有结构成员char数组的sscanf
- 仅使用结构名称访问结构成员
- 使用 structType*& 赋给结构成员
- 使用结构成员指针在C++中填充结构
- 聚合初始化,将成员指针设置为同一结构成员
- 为什么结构化绑定不使用"auto&"返回对结构成员的引用,而是返回成员本身
- 是否可以将结构数组别名为结构成员数组?
- 结构成员在访问时被清除
- 如何指示结构成员没有锯齿?
- 为什么继承的结构成员在联合中无法访问?
- 尝试在 qml 中访问结构成员的 QList
- C++/CLI -- 访问结构成员
- 调用在类中声明的结构成员
- 对结构成员的临时绑定引用
- 无法使用 strcpy 将字符串复制到静态结构成员
- 为什么类成员数据必须是静态的才能被模板化类的模板化结构成员访问
- 填充模板化结构类型的结构成员
- C/C++intellisense 0.26.1不显示结构成员列表
- 在源文件中创建具有结构成员的结构
- 如何访问结构成员作为指针