gpt4 book ai didi

c++ - 从另一个类访问类成员,使用指针好还是友元好?

转载 作者:行者123 更新时间:2023-11-28 06:27:20 30 4
gpt4 key购买 nike

我正在尝试从另一个类访问和更改一个类的成员变量。我会尽力解释我的问题。我有一个名为 solution 的类,它处理我的大部分项目,它有几个不同的类作为成员变量。解决方案有一个矩阵(类)成员变量,我试图从其他类修改它。

class Solution{
public:
void DoSomething();
private:
Class1 mObject1;
Class2 mObject2;
Matrix mSolutionMatrix;
};

Solution::DoSomething()
{
mObject1.SetPointer(&mSolutionMatrix); // Set the pointer to solution matrix
mObject2.SetPointer(&mSolutionMatrix);
mObject1.ModifyMatrix(); // Modify the matrix in Class1
mObject2.ModifyMatrix(); // Now try to modify the solution matrix after object 1 has changed it.
}

然后如果我有 Class1 和 Class2,只定义一个,因为我尝试做的原理是相同的。他们都试图修改 solution.mSolutionMatrix

class Class1{
public:
void SetPointer(Matrix* pointer);
void ModifyMatrix();
private:
Matrix* mPointerToMatrix; // This is where I am stuck
};

void Class1::SetPointer(Matrix* pointer)
{
mPointerToMatrix = pointer;
}
void Class1::ModifyMatrix()
{
// Do something to solution matrix
}

我想知道这是否可以通过使用指针来实现,或者让 Class1、Class2 和解决方案成为彼此的 friend 会更好。我希望我解释得足够好。

最佳答案

我建议完全颠倒你的设计,让解决方案矩阵接受对象输入。然后你可以只使用对象的公共(public)接口(interface)来做解决方案矩阵的突变。通过这种方式,您不需要另一个类的公共(public)状态的友元或公共(public)突变。

Solution::DoSomething()
{
mSolutionMatrix.modify(mObject1);
mSolutionMatrix.modify(mObject2);
}

关于c++ - 从另一个类访问类成员,使用指针好还是友元好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28304471/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com