【发布时间】:2018-05-13 08:24:02
【问题描述】:
您好,我在理解 C++ 中的朋友关键字时遇到了一些麻烦
假设我有一个如下所示的类:
class A
{
private:
friend class B;
struct Astruct
{
int funVar = 1;
};
Astruct myStruct
public:
changeAStruct(); // changes the value of funVar to 2
};
class B
{
//how do i here get access to myStruct with the value 2?
};
希望上面的伪代码能告诉你我的问题。我想要 myStruct 的同一个实例,使用 this 指针可以让我进入 B 类的 A 类。我怎样才能实现这一点?
我不想在 B 类中输入这个:
A::Astruct myStruct
因为这会在 B 类中创建一个新结构,并将 funVar 设置为 1。我希望在 A 类中使用相同的结构,但现在在 B 类中......
编辑:我想从 main 我可以将 myStruct 作为参考发送到 B 类并从那里访问它。这是最佳做法吗?
【问题讨论】:
-
如果您想要指针的功能,请使用指针。
-
this指的是在B范围内的B实例。那么您要操作的其他A实例在哪里? -
但是那个指针看起来怎么样?简单地输入 A::Astruct *myStruct 并没有真正的帮助
-
朋友可以访问事物,但不能访问不存在的事物。
B中的代码可以访问Astruct类型。B中具有A实例的代码可以访问该A实例的myStruct属性。但是A类本身没有myStruct,因此B代码没有任何访问权限。 -
“没有帮助” - 为什么不呢?如果你尝试它会出现什么问题?我们可能需要更多的上下文来回答这个问题......