C++ 继承具有不同类型的向量类

C++ 继承具有不同类型的向量类,c++,inheritance,vector,stl,C++,Inheritance,Vector,Stl,我正在尝试继承STL向量类,以便自己创建一个新类。它将使用向量的基本属性,但我将添加一些新函数,如和或除。这里的问题是,我试图为不同的类型实现该类。如何同时使用继承和模板 下面是我的班级,我需要一些帮助 //template <class T> ? class NewVector<T> : public vector<T>{ //some constructors }; 对。继承STL不是一个好主意。我知道这一点。但假设我正在使用这个继承 我在这里面临的

我正在尝试继承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);

.....

首先,公开继承std::vector和其他标准库容器

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

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

首先,公开继承std::vector和其他标准库容器

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

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

请不要这样做!我不希望必须拿起您编写的代码并维护它。如果我看到一个std::vector,我马上就会知道我在处理什么。在你们班上,我不会

请注意,std::vector没有虚拟析构函数,总有一天会有人使用std::vector指针引用您的类

我会考虑沿着STL所采用的算法方法开发需要的操作。这有额外的好处,你的功能有更广泛的使用;跨多个stl容器


如果您不喜欢std::vector实际存储数据的方式,请从头开始构建您自己的类。

请不要这样做!我不希望必须拿起您编写的代码并维护它。如果我看到一个std::vector,我马上就会知道我在处理什么。在你们班上,我不会

请注意,std::vector没有虚拟析构函数,总有一天会有人使用std::vector指针引用您的类

我会考虑沿着STL所采用的算法方法开发需要的操作。这有额外的好处,你的功能有更广泛的使用;跨多个stl容器


如果您不喜欢std::vector实际存储数据的方式,请从头开始构建您自己的类。

标准容器不是从中派生的。如果要为vector定义新函数,请为vector定义新函数。你不需要继承这个,有没有办法?我需要继承向量类。编写自己的向量类肯定是不可能的。我该怎么做呢。库是否允许我为vector添加一些新函数,或者它是否允许我更改实体?自由函数,而不是成员函数。标准容器不应派生自。如果要为vector定义新函数,请为vector定义新函数。你不需要继承这个,有没有办法?我需要继承向量类。编写自己的向量类肯定是不可能的。我该怎么做呢。库是否允许我为vector添加一些新函数,或者它是否允许我更改实体?自由函数,而不是成员函数。谢谢您的帮助。这对我来说是个好的开始。但这里我不明白的一点是,我将如何定义T类型的构造函数?我能和我的STL类方法一起使用吗?新的{//bla bla};该构造函数是否适用于NewVector v13;和NewVector v45@我不明白你的问题。T是一个模板参数。它要么有用户定义的构造函数,要么没有。谢谢您的帮助。这对我来说是个好的开始。但这里我不明白的一点是,我将如何定义T类型的构造函数?我能和我的STL类方法一起使用吗?新的{//bla bla};该构造函数是否适用于NewVector v13;和NewVector v45@我不明白你的问题。T是一个模板参数。它要么有用户定义的构造函数,要么没有。