继承具有不同类型的向量类
Inheriting vector class with different types
我试图继承STL矢量类来创建我自己的新类。它将使用vector的基本属性,但我将添加一些新的函数,如sum或divide。这里的问题是我试图实现这个类也为不同的类型。如何同时使用继承和模板?
下面是我的类体,我需要一些帮助
//template <class T>
?
class NewVector<T> : public vector<T>{
//some constructors
};
是的。继承STL不是一个好主意。我知道。但是让我们假设我正在使用这个继承。
我在这里面临的问题是建筑构造者。
我在main中像这样调用构造函数,
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,我马上就知道我要处理的是什么。有你的课我就不会。
注意std::vector没有虚析构函数,总有一天会有人使用std::vector指针来引用你的类。
我会考虑按照仍然采用的算法方法开发您需要的操作。这有一个额外的好处,你的函数有更广泛的用途;跨多个STL容器。
如果您不喜欢std::vector实际存储数据的方式,那么您可以从头构建自己的类
首先,从std::vector
和其他标准库容器公开继承被认为是一个坏主意。
template <class T>
class NewVector : public vector<T>
{
// ....
};
相关文章:
- 如何创建从同一类继承的不同对象的向量
- C++中函数的向量返回类型引发错误
- 我收到同义重复编译器错误。我应该如何修复"类型"X"的参数与类型"X"的参数不兼容?
- 在 C++ 中输出枚举类类型的向量元素
- 如何在 c++ 中定义接受不同参数类型的函数向量?
- 在类 A 中创建类型为 B 类的向量 - 访问数据 [C++] [成员在两个类中都是私有的]
- 具有 STL 向量类型成员的类的复制内存
- 将不同类型的变量添加到向量中
- std::<key-value>不同类型的对向量
- 如何以"union-like"方式更改C++向量的数据类型
- C++如何乘以包含 std::variant 元素的向量的迭代器?正在执行迭代器类型的转换?
- C++ 将抽象类型的动态分配对象传递给函数并存储在向量中
- 返回字符串和不同向量数据类型的映射C++
- 如何确定传递给模板函数的向量的类型
- 向量的向量不同类型
- 调用函数时,如何通过向量返回类型
- 更改成员向量的类型
- Int模板中的数组/向量/其他类型
- 与我定义的类的成员有关的c++向量数据类型编译器错误问题
- 从boost mpl向量注册类型