如何访问嵌套类的数据?

时间:2019-11-22 17:34:23

标签: c++ oop

我正在学习C ++ OOP,但遇到嵌套类问题。 我正在实现一个由活动组成的Notebook应用程序。 在CActivity类中,我有CAdressCDate嵌套类,它们是CActivity的朋友,因此我应该能够访问它们的数据。但是,当我创建CActivity对象时,只能访问CActivity的数据(lchildrchildactivity_name)。

每次创建CDate对象以保存其数据时,我都想访问CAdressCActivityNotebook类将代表二进制搜索树,其中活动按日期排序。

在这里,我将提供代码:

class CActivity {
    friend class Notebook;
private:
     CActivity* lchild, * rchild;
     string activity_name;

     class CAdress
     {
         friend class CActivity;
     private:
         string city_name;
         int city_code;
         string street;
         int street_number;
     public:
         void setCity(string name) { this->city_name = name; }
         void setCityCode(int code) { this->city_code = code; }
         void setStreet(string str) { this->street = str; }
         void setNumber(int nr) { this->street_number = nr; }
         CAdress(string name, int code, string street, int nr)
         {
              setCity(name);
              setCityCode(code);
              setStreet(street);
              setNumber(nr);
         };

     };
     class CDate
     {
         friend class CActivity;
     private:
         int day;
         int month;
         int year;
     public:
         void setDay(int dd) { this->day = dd; }
         void setMonth(int mm) { this->month = mm; }
         void setYear(int yyyy) { this->year = yyyy; }
         CDate(int dd, int mm, int yyyy)
         {
             setDay(dd);
             setMonth(mm);
             setYear(yyyy);
         }; 

     };

public:
    CActivity(string activity){
        activity_name = activity;
        lchild = rchild = NULL;

    }
};

我不太清楚问题出在哪里...请提供建议。谢谢!

1 个答案:

答案 0 :(得分:2)

嵌套类CAdress,CData没有对象! CActivity类应有权访问CAddress,CData类。您可以将CAddress或CData object-member放入CActivity中以提供对它们的访问。应该公开访问。

class CActivity {
    public : 
            CData m_cData;
            CAddress m_address;

....

}