c++ - 是否可以在实例方法中使用带有 "this"的重载运算符?

标签 c++

我正在制作链表,其中一种方法是打印链表的数据。我试图使用循环并重载 []运算符(返回 inode 的数据类型 T)打印列表,如下所示:

for(unsigned int i = 0; i < length; i++){
    cout << this[i] << endl;
}

编译器抛出一个错误 cout不支持类型 const LinkedList<T> ,尽管这段代码在我的测试文件中有效:

LinkedList<int> newList = LinkedList<T>();
populateList
cout << newList[5] << endl;

我怀疑我的语法将重载括号运算符与 this 一起使用是不正确的,有人可以详细说明为什么吗?

编辑2:

删除原始代码片段以避免任何潜在的学术诚信问题。

最佳答案

您必须编写 (*this)[i],因为重载的 [] 运算符属于类本身,但是 this只是一个指针。

表达式 this[i] 是有效的,但通常 p[i] 其中 p 是一个指针被解释为 *(p + i),所以它没有按照您的意愿去做。

关于c++ - 是否可以在实例方法中使用带有 "this"的重载运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54795409/

相关文章:

c++ - Alpha 混合说明

c++ - 在 OnNavigatedTo 导航到另一个页面?

c++ - GLSL 编译器错误 error C0000 : syntax error, unexpected identifier, expecting "::"at token <var>

c++ - 为什么使用指针 vector 被认为是不好的?

c++ - Doxygen 中返回值的默认说明

c++ - 特定的重载转换运算符

C++ 常量赋值

带有继承的 C++11 代码不能用 clang 编译

c++ - 提取字形字距调整信息 C++

c++ - 具有任意整数值的枚举类型