通常、アダプタの目的は、変更された形式で関数呼び出しを行うことです。メンバー変数に同じようなことをする方法はありますか?つまり、SomePoint
を含むオブジェクトと、DifferentPoint
を含む別のオブジェクトがあるとします。 SomePoint
は、メンバー変数としてデータを格納します。X
およびY
ここで、AnotherPoint
は、メンバー変数としてデータを小文字のx
およびx
として保存します。だから問題があるのは、SomePoint
またはDifferentPoint
のいずれかを受け入れる関数を書くことができないということです。.x
または.X
にアクセスすることはできません(テンプレートを使用して、それぞれの異なるポイントタイプに完全に特化しない場合でも可能です。ポイントタイプのオーバーロード)。メンバ変数の "アダプタ"
.x
が要求されたときにSomePoint
のために.X
を生成するアダプタを作成する方法はありますか?どちらのポイントタイプもライブラリクラスなので、どちらかの内部構造を直接編集することはできません。私はまた、データのコピーを避けたいと思います。
メンバー関数 'getx()'と 'getX()'を扱う場合、この問題が根本的にどのように違うのか混乱します。 –
@ChristianHackl次に、アダプタの関数の実装を変更して、正しい値を返します(Pointクラスごとに1つのアダプタを持つことができます)。 –
メンバー変数にそのようなアダプタ関数を書くのはどうですか? 'int getX(SomePoint const&)'や 'int getX(differentPoint const&)'のようなものです。 –