代码之家  ›  专栏  ›  技术社区  ›  Sadique

结构和类的嵌套

c++
  •  2
  • Sadique  · 技术社区  · 14 年前
    #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);
    }
    

    请说明: 当我在turbo c上执行上述程序时,我得到了输出: 一 二 二 现在,在每种情况下,大小不应该相同,或者至少我的_类的大小应该与我的_结构相同或更大!! 如果程序中存在错误,请尽可能修复错误,否则忽略错误,集中精力解决手头的问题! 我不相信涡轮增压器C…但是现在我的vs 2008由于我的内存坏了而不断崩溃!

    2 回复  |  直到 13 年前
        1
  •  5
  •   AnT stands with Russia    14 年前

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

    struct My_Class{
    };
    
    class My_struct{
      int am_i_in_class_or_struct;
    };
    

    只有一个区别。在代码中,结构的名称是 My_Class::My_struct . 在我的版本中,它只是 My_struct . 只有名字变了。没有别的了。(实际上,在访问权方面还存在其他一些差异,但与所述问题不直接相关。)

        2
  •  6
  •   Amir Rachum    14 年前

    My_Class 不包含 My_struct 它只是定义了它。如果你想创建一个 MySyt结构 来自外部的实例 米亚尔 ,它将被称为 My_Class::My_struct .

    为了实际包括 MySyt结构 实例在 米亚尔 你应该这样做

    struct My_Class{
      class My_struct{
        int am_i_in_class_or_struct;
      };
      My_struct myStructInstance;
    };