C++ 结构和类的嵌套 #包括 使用名称空间std; 构造My_类{ 类My_结构{ 类或结构中的int am_i_; }; }; int main(){ cout

C++ 结构和类的嵌套 #包括 使用名称空间std; 构造My_类{ 类My_结构{ 类或结构中的int am_i_; }; }; int main(){ cout,c++,C++,您嵌套的是声明,而不是数据。在另一个类中声明一个类不会神奇地使内部类的数据成员也成为外部类的成员。您的代码实际上相当于一个 #include<iostream> using namespace std; struct My_Class{ class My_struct{ int am_i_in_class_or_struct; }; }; int main(){ cout<<sizeof(My_Class)<<endl; cout<<sizeo

您嵌套的是声明,而不是数据。在另一个类中声明一个类不会神奇地使内部类的数据成员也成为外部类的成员。您的代码实际上相当于一个

#include<iostream>
using namespace std; 
struct My_Class{
class My_struct{
int am_i_in_class_or_struct;
};
};

int main(){
cout<<sizeof(My_Class)<<endl;
cout<<sizeof(My_struct)<<endl;
cout<<sizeof(int);
}

只有一个区别。在您的代码中,结构的名称是
My_Class::My_struct
。在我的版本中,它只是
My_struct
。只有名称更改。没有其他区别。(实际上,在访问权限方面还有一些其他区别,但与前面提到的问题没有直接关系。)

My_Class
不包含
My_struct
,它只是定义了它。如果您想从外部
My_Class
创建一个
My_struct
实例,它将被称为
My_Class::My_struct

为了在
myu类
中实际包含
myu结构
实例,您应该

struct My_Class{
};

class My_struct{
  int am_i_in_class_or_struct;
};

如何?通常的方式:数据是“嵌套的”通过在外部类中声明一个数据成员
My_struct My_struct;
。@strut您是否尝试过使用我的答案中的代码来解决这个问题?@strut:我不知道您是如何使用它来得到这样一个错误的。您需要发布代码。按照我在上面的注释中建议的操作不会导致编译器出现任何错误。另外,当您在
My_Class
,您不需要使用全名
My_Class::My_struct
。只要
My_struct
就足够了。但是
My_Class::My_struct
也应该可以使用。
struct My_Class{
  class My_struct{
    int am_i_in_class_or_struct;
  };
  My_struct myStructInstance;
};