我正在学习C ++ OOP,但遇到嵌套类问题。
我正在实现一个由活动组成的Notebook应用程序。
在CActivity
类中,我有CAdress
和CDate
嵌套类,它们是CActivity
的朋友,因此我应该能够访问它们的数据。但是,当我创建CActivity
对象时,只能访问CActivity
的数据(lchild
,rchild
和activity_name
)。
每次创建CDate
对象以保存其数据时,我都想访问CAdress
和CActivity
。 Notebook
类将代表二进制搜索树,其中活动按日期排序。
在这里,我将提供代码:
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;
}
};
我不太清楚问题出在哪里...请提供建议。谢谢!
答案 0 :(得分:2)
嵌套类CAdress,CData没有对象! CActivity类应有权访问CAddress,CData类。您可以将CAddress或CData object-member放入CActivity中以提供对它们的访问。应该公开访问。
class CActivity {
public :
CData m_cData;
CAddress m_address;
....
}