>>568 Foo のメンバ変数は一つなんだよ
コンパイラ通らないっていうけど、C++0x に準拠したもので試してるのか?
>>569 メンバ変数は boo, f の二つだよ?
>>569 >>473 C++0x なら Foo foo[ 100 ]={} でいいだろ。
>>474 のように 0 を書いちゃうと、 boo を 0 で初期化することになって、
Boo に int を受け取るコンストラクタが無いから、エラーになるだろう。
>>571 >Boo に int を受け取るコンストラクタが無いから、エラーになるだろう。
C++0xの話だといってるのに・・・
573 :
デフォルトの名無しさん:2010/09/09(木) 14:08:30
0xスレに移動したほうがいい話題じゃねえか?
ちょっと今イテレータの勉強してて、全要素を巡回する基本的なイテレーターに対して
特定の条件を満たす要素を巡回するイテレーターを作りたいと思ってるんだけど
1:まったく別の新しい型としてイテレーター型を実装する
2:型消去を使って隠蔽する
3:アダプタをかませる
とりあえずこんな方法が思いつくけど、どれも一長一短でいまいち
1はコードが重複するしクライアントがイテレーターの型を意識しないといけない
2はクライアントは楽だけどメモリ、実行効率ともに若干劣る
3は1よりコード重複が少ないけれどクライアントが型を意識しなければならない点は同じ
なにかほかにいいアイデアはないですかね?
>>572 C++0x勉強中だけど、どのコンパイラなら
Foo foo[ 100 ]={0};
がエラーにならないの?その場合配列はどのように初期化されるの?
手持ちのgcc 4.3.3では-std=gnu++0x指定しても当たり前のように
エラーになるけど。
>>574 何がしたいのかか全然わからん
作るべきはコンテナじゃないのか?
577 :
575:2010/09/09(木) 15:37:26
ごめん訂正。
×手持ちのgcc 4.3.3
○手持ちのgcc 4.4.3
>>574 やりたいのは boost::filter_iterator みたいなもの?
>>575 当たり前だ
その一行だけを書いて通るわけがない
エラーメッセージとか読めないのか
580 :
575:2010/09/09(木) 15:50:46
>>579 その一行だけ書いてコンパイルするほどバカじゃないです。
コードは↓ですよ。
struct Boo
{
Boo() : b( 111 ){}
int b;
};
struct Foo
{
Boo boo;
int f;
};
Foo foo[ 100 ];
gcc は 4.5 でも 0x の一部にしかサポートされてないよ
582 :
575:2010/09/09(木) 15:52:32
上の
Foo foo[ 100 ];
↓変更
Foo foo[ 100 ]={0};
でエラーになります。