ページ 11

書きこみ専用インターフェースの作り方

Posted: 2013年3月06日(水) 17:17
by dom
書きこみ専用領域のラッパークラスとしてWriteOnlyArrayを作りたいと考えています。
使用法として例えば以下のように考えています。

コード:

template <class T>
class WriteOnlyArray {};

class Point {
    double x, y;
};

WriteOnlyArray<Point> array; // 適当に初期化済み
Point p;
double d;

// 以下のようなコードを書けるようにしたい
//(1)
array[idx] = p;  // OK
p = array[idx];  // コンパイルエラー

// (2)
array[idx].x = d;  // OK
d = array[idx].x;  // コンパイルエラー
上記の(1)の場合は大丈夫なのですが、(2)の場合の実装案が思い浮かびません。
正直無理な気がしているのですが何かあればと思い質問させていただきました。

Re: 書きこみ専用インターフェースの作り方

Posted: 2013年3月06日(水) 17:28
by YuO
(1) は WriteOnlyArray クラステンプレートに関する話ですが,
(2) は Point クラスに関する話です。

(2) を実装するのは Point クラス側の責務になります。