我在c ++方面不是很好,所以我真的需要你的帮助。我在对象内部使用方法,我想访问其他对象成员。我怎样才能以更好的方式做到这一点,而不是违反OOP?
这是我的.h
class XSection
{
private:
char *m_sname;
XSection *m_snext;
};
class XIniFile
{
private:
char *m_iname;
XSection *m_isections;
XSection *addSection(const char *);
}
我在.cpp
中有类似的内容XSection *XIniFile::addSection(const char *d)
{
XSection *sn = (XSection *) malloc (sizeof(XSection *));
sn->m_sname = strdup(d);
return sn;
}
我的错误为char* XSection::m_sname is private char *m_name;
我怎么能用它?
答案 0 :(得分:2)
一般来说,这被认为是不好的做法,因为它违反了encapsulation的概念。在这种情况下,最好给XSection一个构造函数,用所需的参数设置它,并使用new而不是malloc。例如:
构造函数定义:
XSection(char* name);
实现:
XSection(char* name) : m_iname(name) { }
用法:
XSection* sn = new XSection(strdup(d));
但要直接回答这个问题:如果必须,你可以将XIniFile设为friend class的XSection:
class XSection
{
friend class XIniFile;