c++ - 继承不同类型的 vector 类

标签 c++ inheritance vector stl

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

下面是我的类(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 以及我将如何告诉我的类(class)去做它们?

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 采用的算法方法开发您需要的操作。这样做的额外好处是您的函数具有更广泛的用途;跨越许多 STL 容器。

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

关于c++ - 继承不同类型的 vector 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16633619/

相关文章:

c++ - 将指向数据成员的指针传递给基类构造函数是否安全?

Java继承。 parent 有 parent 名单, child 必须有 child 名单。如何?

ruby - ruby 中的多重继承类型类继承

vector - Vec 上 set_len 操作的安全性,具有预定义的容量

java - 如何将 Char[] 转换为 Vector

c++ - 为什么打印un_ordered map和map(dictionary)的key和value有异常?

c++ - 访问 TIFF 图像

c++ - 多客户端程序

haskell - 使用 Data.Vector.Unboxed.Mutable 创建 1..N 的随机排列

c++ - 在 C++ 中创建一个类对象