首页 > 解决方案 > 我可以以某种方式从向量中复制成员类型吗?

问题描述

我正在编写具有 std::vector 作为私有字段的 MyVector 类。MyVector 类应该提供 std::vector 的所有成员类型。我怎么解决这个问题?是这样复制它们的正确方法(但它不起作用):

class MyVector{
    private:
        vector<int> numbers;
    public:
        using value_type = vector<int>::value_type;
        using size_type = vector<int>::size_type;
        using iterator = vector<int>::iterator;
        using allocator_type = vector<int>::allocator_type;
        using difference_type = vector<int>::difference_type;
        using reference = vector<int>::reference;
        using const_reference = vector<int>::const_reference;
        using pointer = vector<int>::pointer;
        using const_pointer = vector<int>::const_pointer;
        using const_iterator = vector<int>::const_iterator;
        using reverse_iterator = vector<int>::reverse_iterator;
        using const_reverse_iterator = vector<int>::const_reverse_iterator;
};

标签: c++vector

解决方案


没有办法做到这一点。

std::vector您可以通过公开继承它并了解如何处理缺少虚拟析构函数来继承所有成员(谢谢@MA),或者您可以按照自己的方式进行选择。没有其他方法可以指定要继承的成员。

但我个人的建议是不要继承std::vector。最好明确说明您想要“继承”什么并按照您的方式做。我们的目标不应该是节省击键。


推荐阅读