【发布时间】:2014-10-25 20:58:40
【问题描述】:
我想问在对象及其成员之一之间共享参数的“最佳”方式是什么。我试图更好地解释我的问题:我有一个需要定义特定 a 参数的 A 类:
class A
{
public:
A(int);
~A();
private:
int ParameterA;
...
}
我还有第二个类 B,它包含一个类 A 的对象作为其成员,并且需要定义另一个参数:
class B
{
public:
B(int);
~B();
private:
A MemberA;
int ParameterB;
...
}
现在我的问题是:如果 ParameterA 和 ParameterB 始终相等,那么“最佳”(干净)策略是什么?
我想到了三种可能
- 第一个选项是保存相同值的两个副本 与上面代码中的名称不同。这在我看来相当 “危险”,它会迫使我总是检查这两个值 是相等的。
- 将 ParameterA 声明为公共,以便 B 类可以访问它
- 定义一个 get 函数,以便 B 类可以使用 get 函数访问 ParameterA
还有其他(更好/标准)的方法来处理这种情况吗?我应该遵循什么方法?
【问题讨论】:
-
听说过关键字friend吗?看到这个链接cplusplus.com/doc/tutorial/inheritance
-
需求是什么? B 类是否必须具有另一个不同的参数,该参数始终等于“MemberA”中的参数,或者您只需要从 B 访问“MemberA”值的选项?
-
好吧,如果他们是平等的。你主要关心的是什么?你认为你必须保护这个案子。你必须确保这种关系永远不会改变吗?例如,如果此值是一种 ID,并且两个对象都是相对于另一个对象创建的,则可以使用静态 const 值对其进行初始化。
-
这有点太抽象,无法准确回答。看来,在这三种可能之中,第三种是最好的一种。如果您的要求更明确,也许其他一些替代方案可能会更好地解决问题。
-
@Alex:是的,我想确保这种关系永远不会改变,但我不能使用 const 值,因为在执行期间应该可以更改 ParameterA(和 ParameterB)。
标签: c++ parameter-passing