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

Better approach in accessing members of an object from another object c++

本文关键字:更好 方法 成员 对象 一个对象 访问      更新时间:2023-10-16

我不是很擅长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;

我如何使用它?

一般来说,这被认为是不好的做法,因为它违反了封装的概念。在这种情况下,最好为XSection提供一个构造函数,用所需的参数对其进行设置,并使用new而不是malloc。例如:

构造函数定义:

XSection(char* name);
实现:

XSection(char* name) : m_iname(name) { }

用法:

XSection* sn = new XSection(strdup(d));

但是要直接回答这个问题:如果必须的话,您可以将XIniFile设置为XSection的一个朋友类:

class XSection
{
    friend class XIniFile;