C++如何在结构体内部定义可静态访问的嵌套结构体?
需求实现说明
这个需求完全可以实现,你给出的嵌套结构体写法本身已经满足Foo::bar::foobar的访问形式要求,不需要所谓的「静态结构体」语法支持。
C++的嵌套类(包括嵌套结构体)本身就处于外层类的作用域中,直接通过外层类名::嵌套类名的形式就可以访问到嵌套类的定义,嵌套类的静态成员自然可以通过外层类名::嵌套类名::静态成员名的形式访问,你遇到的问题只是静态成员需要额外做类外初始化,否则会触发链接错误。
完整可运行示例
#include <iostream> #include <string> struct Foo { struct bar { // 声明静态成员 static std::string foobar; // 可选:如果不需要创建bar的实例,可以删除默认构造函数,强制只能静态访问 bar() = delete; }; }; // 必须在类外完成静态成员的初始化,这一步不能省略 std::string Foo::bar::foobar = "hello world"; int main() { // 完全按照你期望的形式访问即可 std::cout << Foo::bar::foobar << std::endl; return 0; }
内容的提问来源于stack exchange,提问作者FryingDutch
相关产品推荐
相关产品推荐

