使用类成员函数访问类内的私有结构
尝试为类内的私有结构编写setter函数。还没有找到允许访问结构的声明方法。使用类成员函数访问类内的私有结构
该结构可能不能移出课程。该函数必须是该类的成员。前向声明可能不被使用。
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;
设置该值。
'void Editor :: setName(string s) { Instance.name = s; //表达式必须是可修改的左值 } – srcs
它**是**可修改的左值。除非您正在编译的代码与您发布的代码不同。 –
什么:
class Editor
{
public:
void setName (string s);
private:
struct Object
{
string name;
}Instance;
}Ed;
void Editor::setName (string s)
{
Instance.name = s;
}
请参阅上面的评论。结果中的错误“表达式必须是可修改的左值”(指函数中的实例) – srcs
请张贴实际的代码。 – juanchopanza