私はPath
extendsstd::vector<Square *>
というSquare
クラスを持っています。これも私が作成したクラスです。はPath
、エンティティが 2D 環境を横断するためのガイドとして機能します。達成可能な最長パスと最短パスを取得する必要があるため、Squares
aで 2 つの間の正方形の数を見つけようとしていPath
ます。これを行うには、をオーバーロードするのが有益だと思いstd::vector<Square *>::push_back(const value_type &__x)
ますが、その構文がどうなるかはわかりません。私は現在これを試しています:
class Path : public std::vector<Square *>
{ //... functional stuff, not relevant.
int length;
public:
push_back(const value_type &__x)
{ Square *last_square = this->at(this->size() - 1);
// how do I call super class push_back?
// however that works, I push back &__x square here.
Square *most_recent = (Square *)&__x;
int delta_x = compare_distance(last_square, most_recent);
length += delta_x;
};
int path_length() { return length; };
};
もちろん、スーパークラスの push_back を呼び出すメソッドを書くこともできると思いますが、関数をオーバーライドする方が簡潔であると感じます。また、stl 関数を適切にオーバーライドする方法を学ぶことは良い習慣です。
ありがとう!