我试图继承STL vector 类以自行创建一个新类。它将使用vector的基本属性,但我将添加一些新功能,例如sum或除法。这里的问题是我正在尝试为不同类型也实现该类。如何同时使用继承和模板?

下面是我需要帮助的类(class)机构。

//template <class T>
?
class NewVector<T> : public vector<T>{

//some constructors
};

是。继承STL不是一个好主意。我知道但是可以说我正在使用这种继承。

我在这里面临的问题是构建构造函数。

我主要这样称呼构造函数,
NewVector<int> v1(3);

但问题是我无法像STL vector 一样创建此v1 vector 。当我尝试调试时,将大小设为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 vector 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);

.....

最佳答案

首先,公开继承std::vector和其他标准库容器is considered a bad idea

请记住,从另一个类模板继承的类模板所需的语法是

template <class T>
class NewVector : public vector<T>
{
// ....
};

09-06 02:22
查看更多