首页 > 解决方案 > 重载 [] 和 = 运算符以在 C++ 中接受我的模板类的值

问题描述

我正在用 C++ 创建自己的 ArrayList STL 类,但现在遇到了问题。我想重载 [] 或 = 运算符(对不起,我不知道哪个会更好的实现),以便 = 运算符右侧的值被分配给 [ 访问的向量的元素] 操作员。

我重载了 [] 运算符以从数组中获取元素,但不知道如何处理它的赋值。

这是 ArrayList 类的实现:

template<class T> class ArrayList
{
   T* array;
   ArrayList() {}
   
   // Implemetation of [] overloading
   T& operator[] (int index) {return array[index];}
}

标签: c++arraystemplatesdata-structuresoverloading

解决方案


你越来越糊涂了。您正在询问分配T对象但T不是您的ArrayList班级。这取决于T班级来处理自己的作业,而不是取决于你的ArrayList班级。

您已经编写的代码可以正常工作。

ArrayList<int> x = ...;
x[1] = 2;

ArrayList<std::string> y = ...;
y[0] = "hello";

尽管您应该做出constTed 在评论中提到的更改。


推荐阅读