、私はC++/OOPに新たなんです。C++私のクラスにSTLコンテナを含めるする適切な方法は何ですか?そもそも
私は私のクラスでのstd ::マップを含めると、私のクラスのユーザーマップのtypedefや能力をどのように提供するかについて疑問に思って。以下の簡単な例のようにする必要がありますか? (私は私がやろうとしているかを示すためにサブセットを示してきました)
それは私が私ものサブセットのためのコンテナを(含まれてきた任意のクラスのためにこれをしなければならない権利を感じていませんマップメソッド)。 これはクラスメンテナンスの問題のようです(たとえば、現在の地図方法は必要ないかもしれませんが、将来必要になるかもしれません)。
p.s.この質問への返答とは別に、以下の例に対する他の修正/フィードバックが評価されます。ここで
#include <map>
#include <string>
class Inventory {
public:
typedef std::string key_type;
typedef std::string mapped_type;
typedef std::map<key_type, mapped_type>::value_type value_type;
Inventory() { }
Inventory(int lotNum) : lotNum_(lotNum) { }
void insert(const value_type& el) { cars_.insert(el); }
//
// TODO: iterators, erase, etc
//
private:
int lotNum_;
std::map<key_type, mapped_type> cars_;
};
int main() {
Inventory ourCars(1);
ourCars.insert(Inventory::value_type("BMW","ABC123"));
return 0;
}
なぜさえ呼び出し側に内部を公開しますか? 2つの文字列が必要な場合は、2つの文字列を引数にとり、それらを関数のマップに挿入するだけの理由はありません。 – NathanOliver
クラスのクライアントは、部分的に転送するクラスの代わりに単に 'map'を使うことができます。代わりに 'Inventory'の振る舞いについて考えて、* that *を実装することをお勧めします。 – StoryTeller
この質問はおそらくhttp://codereview.stackexchange.com/に適しています。 – user463035818