c++ - 我可以以某种方式从向量中复制成员类型吗?
问题描述
我正在编写具有 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;
};
解决方案
没有办法做到这一点。
std::vector
您可以通过公开继承它并了解如何处理缺少虚拟析构函数来继承所有成员(谢谢@MA),或者您可以按照自己的方式进行选择。没有其他方法可以指定要继承的成员。
但我个人的建议是不要继承std::vector
。最好明确说明您想要“继承”什么并按照您的方式做。我们的目标不应该是节省击键。
推荐阅读
- c# - 使用 MailKit 的正文或消息包含方法
- mysql - 插入时在 MySql 中创建列
- python - 日期更改时如何触发功能?
- php - laravel,用不同的过滤器过滤多对多的关系
- python-3.x - [Python]; 如何在 csv 文件中写两个变量,在同一行但不同的列
- reactive-programming - 当错误出现在 200 状态码的有效负载中时抛出错误
- php - 如何在 PHP 中随机化 JSON 数组?
- flutter - 颤振加载图像资产太慢
- python - 如何根据另一个列表对一个列表进行排序?
- rust - 替换std::sync::Semaphore,因为它已被弃用?