STL ベクトル クラスを継承して、自分で新しいクラスを作成しようとしています。ベクトルの基本プロパティを使用しますが、合計や除算などの新しい関数をいくつか追加します。ここでの問題は、そのクラスをさまざまなタイプにも実装しようとしていることです。継承とテンプレートの両方を同時に使用するにはどうすればよいですか?
以下は、助けが必要なクラス本体です。
//template <class T>
?
class NewVector<T> : public vector<T>{
//some constructors
};
はい。STL を継承するのは得策ではありません。私はそれを知っています。しかし、私はこの継承を使用しているとしましょう。
ここで直面する問題は、コンストラクターの構築です。
このようにメインでコンストラクターを呼び出していますが、
NewVector<int> v1(3);
しかし問題は、STL ベクトルのようにこの v1 ベクトルを作成できないことです。デバッグしようとすると、サイズが 0、容量が 0 になります。コンストラクターでサイズと容量を編集するにはどうすればよいですか? 私はそれらをやろうとしましたが、管理できませんでした。
template <class T>
class NewVector : public vector<T>{
public:
NewVector(T n){
const ArithmeticVector<T> &v1(n);
cout<<v1.size()<<endl;
};
//some constructors
};
v1 ベクトル 0 のサイズが表示されますが、前述のように 3 を表示したいです。少しの助けがいいでしょう。
メインファイルはこちら。私はいくつかのコンストラクターを書く必要があることを知っていますが、それらは int と double の両方で動作する必要があり、クラスにそれらを行うようにどのように指示しますか?
using namespace std;
int main() {
NewVector<int> v1(3); // creating some objects
NewVector<int> v2(3); // vector elements are assigned randomly from 0 to 10
NewVector<double> v3(5);
NewVector<double> v4(5);
.....