c++ - 重载 [] 和 = 运算符以在 C++ 中接受我的模板类的值
问题描述
我正在用 C++ 创建自己的 ArrayList STL 类,但现在遇到了问题。我想重载 [] 或 = 运算符(对不起,我不知道哪个会更好的实现),以便 = 运算符右侧的值被分配给 [ 访问的向量的元素] 操作员。
我重载了 [] 运算符以从数组中获取元素,但不知道如何处理它的赋值。
这是 ArrayList 类的实现:
template<class T> class ArrayList
{
T* array;
ArrayList() {}
// Implemetation of [] overloading
T& operator[] (int index) {return array[index];}
}
解决方案
你越来越糊涂了。您正在询问分配T
对象但T
不是您的ArrayList
班级。这取决于T
班级来处理自己的作业,而不是取决于你的ArrayList
班级。
您已经编写的代码可以正常工作。
ArrayList<int> x = ...;
x[1] = 2;
ArrayList<std::string> y = ...;
y[0] = "hello";
尽管您应该做出const
Ted 在评论中提到的更改。
推荐阅读
- functional-programming - 如何修复 F# 函数参数中的类型错误
- java - 参数化测试不适用于 GuiceExtension
- javascript - How to split the String based on array elements into array retaining the array the split word in javascript
- javascript - 使用 momentjs 在 DST 期间获取时区缩写
- break - 如何在 InDesign 脚本中打断一行文本?
- pandas - 如何将 GROUPBY 的结果与 pandas 中的原始数据框连接起来?
- python - 在管理面板和站点(Django)中同时授权管理员
- filter - SPARQL - 过滤评论。标签和摘要到英文并保留整数和 uri 值
- excel - VBA搜索边界单元格并提取
- javascript - 将更新的元素从 JS 线程传递到 Shadow Thread