假设我有一个班级Character
:它包含许多private
变量,例如positionX, PositionY, Atk, Def, Agi, Velocity
,并且必须将其传递给处理和更改此Character
个变量的函数。
由于它有很多变量,我如何传递这些变量?我应该为每个变量制作getter和setter吗?关于这个的最佳做法是什么?
我正在考虑创建一个包含所有这些变量的struct
类,所以我可以通过那个struct
类,但我不知道这是不是一个好习惯。
答案 0 :(得分:5)
如果只传递结构,它将被复制。好的做法是将其作为引用或作为const引用传递,或者甚至作为shared_ptr
传递void foo(const MyStruct& ms);
void foo(MyStruct& ms);
void foo(std::shared_ptr<MyStruct> ms);
答案 1 :(得分:2)
如果你的函数修改私有变量,那么函数应该是一个成员函数。
如果这不合适,那么你可以将该函数声明为该类的朋友。
如果您有许多不能成员但需要访问成员变量的函数,并且您不需要封装,那么请考虑将成员公开。