現在、c++で2Dポイントを表すためにstd::pairを使用しています。しかし、私は書く必要があることに悩まされています
typedef std::pair<double, double> Point;
Point difference = Point(p2.first - p1.first,
p2.second - p1.second);
operator+とoperator-をオーバーロードできる代わりに。
だから、私の質問は、私のポイントクラスを作るために、私はすべきかということです
- std :: pairから公に派生し、自分のメンバー関数を追加しますか?私のコードはすべて同じままでいられるので、これは素晴らしいことです。私はそのような
std::pair<double, double>* p = new Point;
ことをするつもりはないので、仮想デストラクタのようなことを心配する必要はありません。 - std :: pairの機能を複製しているので面倒な、自分のPointクラスをロールしますが、「純粋な方法で実行しています」。
- std :: pair用にoperator+とoperator-のテンプレートを特殊化します。これは、ソースファイルとヘッダーファイルのどちらに含まれるかを確かに覚えていません。
議論の余地があると思います。本当に#1をやりたいのですが、STLからの継承はノーノーだと聞いているので、それが悪い考えかどうかはわかりません。