使用类成员功能访问私有结构

accessing private struct inside class using class member function

本文关键字:结构 访问 功能 成员      更新时间:2023-10-16

试图为班级内的私人结构编写一个设置器函数。尚未找到允许访问结构的声明方法。

该结构可能不会在班级之外移动。该功能必须是课程的成员。不得使用正向声明。

class Editor
{
public:
    void setName ( string s );
private:
    struct Object
    {
        string name;
    }Instance;
}Ed;
void Editor::setName ( string s )
{
    name = s;  // no access
}

=================================

class Editor
{
public:
    friend void setName ( Editor &m , string s );
private:
    struct Object
    {
        int name;
    }Instance;
}Ed;
void setName ( Editor &m , string s )
{
    name = s; // no access
}

=================================

class Editor
{
public:
    friend void setName ( Object &m , string s ); //invalid declaration (  Object is undefined )
private:
    struct Object
    {
        string name;
    }Instance;
}Ed;
void Editor::setName ( string s )
{
    name = s;  // no access
}

当然你不能那样做。Editor中没有名为name的对象。但是,有一个名为Instance的对象,包含一个名为name的对象,您可以使用Instance.name = s;

设置该值

at:

class Editor
{
public:
    void setName ( string s );
private:
    struct Object
    {
        string name;
    }Instance;
}Ed;
void Editor::setName ( string s )
{
    Instance.name = s; 
}