我想知道是否有人的设计可以帮助我从GUI界面编辑嵌套对象。
假设我有两个班级
class ObjectA
{
public:
ObjectA()
~ObjectA()
unsigned GetParam();
void SetParam(unsigned Param)
private:
unsigned Param;
};
class ObjectB
{
public:
ObjectB()
~ObjectB()
ObjectA GetObjectA();
void SetObjectA(ObjectA ObjA)
private:
ObjectA ObjA;
};
现在假设我可以访问ObjectB,但我真的需要从GUI设置Param。我可以通过两种方式来做到这一点。
使用访问器和更改器来编辑对象
ObjectA ObjA = ObjB.GetObjectA();
ObjA.SetParam(100);
ObjB.SetObjectA(ObjA);
向ObjectB添加公共接口
void ObjectB::SetParam(unsigned Param)
{
ObjA.SetParam(Param);
}
我真的不喜欢这些解决方案,因为它们涉及很多代码编写访问对象参数并且不能很好地扩展。有什么建议吗?
答案 0 :(得分:0)
我的建议是将objA作为指针而不是对象本身,因为它会更容易避免处理复制构造函数,而且如果ObjectA中有更多的函数,那么你可能需要在类ObjectB中具有相同的函数,例如:像SetParam一样,你可能需要实现GetParam ..
这些功能是各个类的责任,而不是容器类的责任。
class ObjectA
{
public:
ObjectA()
~ObjectA()
unsigned GetParam();
void SetParam(unsigned Param)
private:
unsigned Param;
};
class ObjectB
{
public:
ObjectB()
~ObjectB()
ObjectA* GetObjectA();
void SetObjectA(ObjectA *ObjA)
private:
ObjectA *ObjA;
};
ObjectA *ObjA = ObjB.GetObjectA();
ObjA->SetParam(100);