変数への参照を、その値を変更する必要があるメンバー関数に渡すことをお勧めします。クラスに参照を格納すると、Shape クラスが参照に結合されます。これは、整数を更新せずに Shape を使用するたびに使用できないことを意味します。これは、Shape コンストラクターが int への参照/ポインターを引数として期待するためです (Shape クラスはポインター/参照を属性として格納します)。 . メンバー関数への参照/ポインターを渡すと、Low Couplingが促進されます。
#include <iostream>
class Shape
{
double shapeValue_;
public:
Shape (double value)
:
shapeValue_(value)
{}
void fireFunction(int& updateMe)
{
updateMe = 123;
}
};
using namespace std;
int main()
{
int update;
cout << update << endl;
Shape s(4.5);
s.fireFunction(update);
cout << update << endl;
return 0;
};
この場合、fireFunction のシェイプ オブジェクト呼び出しを含まないメイン プログラムのオプションがあります。
int main()
{
Shape s(4.5);
// Main program that doesn't use fireFunction.
return 0;
};
この場合、入力引数を変更するメンバー関数がある場合は、そのような関数を定義するためのスタイルを取る必要があります。たとえば、メンバー関数によって変更される変数が、常にその宣言の最初の入力引数であることを確認してください。
複雑なオブジェクトが相互に更新をやり取りしたい場合は、オブザーバー パターンを利用できます。