访问不同类的私有结构体成员
Accessing private struct members of a different class
嗨,我在理解朋友关键字时遇到了一些麻烦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?
};
希望上面的伪代码能向您展示我的问题。我想要与使用 this 指针相同的 myStruct 实例,这将使我在 B 类中的 A 类中。我怎样才能做到这一点?
我不想要的是 B 类中键入以下内容:
A::Astruct myStruct
因为这会在类 B 中创建一个新结构,并将 funVar 设置为 1。我想要在 A 类中使用相同的结构,但现在在 B 类中......
编辑:我想从main我可以将myStruct发送到B类作为引用并从那里访问它。这是最佳选择吗?
我不确定你想要什么,但你可以做这样的事情:
class A
{
private:
friend class B;
struct Astruct
{
int funVar = 1;
};
Astruct myStruct;
};
class B
{
public:
int getFunVar(A &a)
{
return a.myStruct.funVar;
}
};
相关文章:
- C++ - 如何在结构向量中找到结构体一个成员的最大值?
- 在C++中使用链表的堆栈实现中,访问结构体headNode成员count和top会导致运行时错误
- 如何获取结构体成员的地址
- 访问不同类的私有结构体成员
- C++ 使用成员函数返回结构体指针属性的值
- 通过函数参数确定结构体成员
- 如何使用其他函数返回的值为结构体成员赋值
- 当我想为结构体声明新成员时,有些麻烦我不明白
- CUDA:结构体的共享数据成员和对该结构体的引用成员具有不同的地址和值
- 按结构体的特定成员对结构体数组进行排序
- 如何在编译时输出结构体中成员的偏移量(C/ c++)
- Vector::erase()也擦除结构体的成员向量
- 模板结构体的静态const成员的不同值
- 比较值与结构体成员的问题
- 从二进制文件中提取结构体成员
- 为什么我的结构体成员没有使用"{}"正确初始化?
- 函数参数 -> 结构体成员的 void* 和常量 void* 的解决方案
- 动态结构体成员在使用 CUDA/NVCC 传递到函数时损坏
- 将相同的变量赋给具有不同值的多个结构体成员
- 为什么编译器不能像变量声明那样在结构体成员中设置 char[] = { .. } 的大小?