ハンドルの使用~上のハンドル定義--『C++primer』ノート
汽车に乗って、勉强しないで、今日の绝笔....
====================================================================================================================================
続いて、容器管理対象が面倒で、ベースクラスも派生クラスもよくなく、ポインタが管理しにくいので、handleクラスで管理しなければなりません.BTW:プログラムではショッピングバスケット(shopping)basketで、ショッピングカートとは呼ばれませんが、ebayではショッピングカートはcartですが、
比較について:
review:operatorreview:デフォルトの実パラメータと関数のリロードも微妙な関係があり、時には似ていることもありますが、デフォルトの実パラメータがある場合は、実パラメータは順序を厳格に守らなければなりません.例えば、最初はisbnしかありません.もちろん、リロードは高級です.最初はpriceでも構いません.
今使う方法は、容器を定義するときにコンパレータを一緒に入れることです
この類の中の
ここのtypedef、後ろに何もついていません.新しい名前は何ですか.
困惑する2、直接このcompareで定義しても一致しません
関数ポインタをレビューしましょう.
Basketクラスの定義
to be continued ...
====================================================================================================================================
続いて、容器管理対象が面倒で、ベースクラスも派生クラスもよくなく、ポインタが管理しにくいので、handleクラスで管理しなければなりません.BTW:プログラムではショッピングバスケット(shopping)basketで、ショッピングカートとは呼ばれませんが、ebayではショッピングカートはcartですが、
比較について:
review:operator
今使う方法は、容器を定義するときにコンパレータを一緒に入れることです
std::multiset<Sales_item, Comp> items(compare);
この類の中の
typedef bool (*Comp)(const Sales_item&, const Sales_item&);
困惑一:ここのtypedef、後ろに何もついていません.新しい名前は何ですか.
困惑する2、直接このcompareで定義しても一致しません
関数ポインタをレビューしましょう.
inline bool compare(const Sales_item& lhs, const Sales_item& rhs){
return lhs->book() < rhs->book();
}
質問を添付します.このbook()関数は、直接的な要求はItemです.ベースメンバー.(カスタムオペレータItem_base*operator->のため)Basketクラスの定義
class Basket {
//type of the comparison function used to order the multiset
typedef bool (*Comp)(const Sales_item&, const Sales_item&);// , ? typedef
public:
//make it easier to type the type of our set
typedef std::multiset<Sales_item, Comp> set_type;
//typedefs modeled after corresponding container types
typedef set_type::size_type size_type;
typedef set_type::const_iterator const_iter;
Basket() : items(compare) { } //initialze the comparator
void add_item(const Sales_item &item){
items.insert(item); }
size_type size(const Sales_item &i) const { //item_count
return items.count(i); }
double total() const; //sum of net prices for all items in the basket
private:
std::multiset<Sales_item, Comp> items;
};
double Basket::total() const {
double sum = 0.0;
for(const_iter iter = items.begin();iter != iterm.end();iter = items.upper_bound(*iter)){
sum += (*iter) -> net_price(items.count(*iter));
}
return sum;
}
to be continued ...