C++相談室 part39
■ このスレッドは過去ログ倉庫に格納されています
0227デフォルトの名無しさん
05/03/15 13:37:22たとえばソートの基準の型(クラス)でMyCmpクラスをつくってですね、
MyCmp mcmp;
set<int> iset(mcmp);
のようにsetのコンストラクタ引数にソートの基準を定めるオブジェクトを
わたしてやるという寸法です。このMyCmp自体は、コンストラクタ引数で
なんらかの情報をうけとり、それによりソートの基準を変化させるように
すれば、動的に基準を変えることができるかと思います。
MyCmp mcmp(MyCmp::desc); //クラス内でenum型{asc, desc}を定義 デフォルトはasc
set<int> iset(mcmp);
ここで思ったのは、一時オブジェクトわたせばいいのでは?ということでやってみると
set<int> iset(MyCmp()); // ok
set<int> iset(MyCmp(MyCmp::desc)); // エラー VC++.net
ということになってしまいました。
もともと一時オブジェクトを渡すこと自体が、文法エラーなのでしょうか?
それとも渡し方に問題があるのですかね。
あと、エラーメッセージが、関数がどうたらとわけわからんものでしたので、
もしや関数の宣言としてとられたりとか、そういうことなのでしょうか?
ちなみにこれは「標準C++ライブラリ チュート&リファ」の内容を参考にした
のですが、同書ではいったんオブジェクトを作成してましたね。
この問題は、どう考えればいいのでしょうか?
■ このスレッドは過去ログ倉庫に格納されています