c++ - 在 C++ 中重载 [] 和 = 运算符以接受我的模板类的值

标签 c++ arrays templates data-structures overloading

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

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

这是 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";

尽管您应该进行 Ted 在评论中提到的 const 更改。

关于c++ - 在 C++ 中重载 [] 和 = 运算符以接受我的模板类的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63545438/

相关文章:

使用自定义双括号格式的 Python 模板安全替换

c++ - 使用模板和/或 constexpr 在编译时构建函数

c++ - Visual Studio 无法在 bool 运算的上下文中实例化强制转换(转换)运算符模板 (T=bool)

c++ - 为什么要将字符 'A' 与 0x41 进行比较?

c - 如何检查 'x' 或 'o' 是否至少出现在一列中?

c++ - C++中的动态数组声明

c++ - OpenCV SurfDescriptorExtractor 编译错误

c++ - 从dll载入dll?

java - 如何实现k路归并排序?

c++ - std::function 模板参数解析