从另一个对象c ++访问对象成员的更好方法

时间:2014-07-30 02:13:01

标签: c++ object

我在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;

我怎么能用它?

1 个答案:

答案 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;