加藤歓隆です。

> PCではなくて、携帯ゲーム機などで使用するので300KBでも
> かなりの領域になります(;_;)可能な限り実行時のメモリの使用量を
> 減らしたいんです、また画像を圧縮すると展開に時間が掛かりすぎる
> し、ついでに扱いが面倒だし。。。

なるほどぉ。

しかし、例えばSetという名前のメンバ関数で
実装すれば、

bool foo(int pixel)
{
CB1Bpp cb(640, 480);

cb.Set(pixel, true);

if(cb[pixel+width])
return false;
banana = cb[pixel-width];
return true;
}

こんな感じになりますよね?

要は、=、+=、|=、&=……
代入演算子がこけるだけで、
読み出しだけなら特に問題は起こらないわけです。

この問題が難しくなる原因は、
たぶん配列演算子[]が、代入演算子よりも
演算優先度が高い、ということにあるのでしょう。
が、上のように、ほんの少し妥協すれば、
演算効率もクラス設計も楽勝で事が運ぶのです。
結果として、全体のメンテナンス性は良くなるのではないでしょうか?


> > しかし、これはあなたが求める文法が
> > 現実に即してない、ということでもあるのです。
> > 残念ながら、通常のメンバ関数を用いる方法で書かない限り、
> > このような汚い方法は避けられないのではないかと思います。

> うーん、無謀ですか(^^;;)、でも普通の配列と同じように使いたいん
> ですよ。
> 今回の場合はイテレーターパターンで実装できそうですが・・・上手い
> 実装方法が見つからないので、もう少し考えてみます。
> --
> Hideo Ikeuchi
> Demo Mod Otaku 古戦場 http://demo.and.or.jp/
> E-mail                i...@and.or.jp