我的代码非常类似于此:
LINT_rep::Iterator::difference_type LINT_rep::Iterator::operator+(const Iterator& right)const
{
return (this + &right);//IN THIS PLACE I'M GETTING AN ERROR
}
LINT_rep::Iterator::difference_type LINT_rep::Iterator::operator-(const Iterator& right)const
{//substracts one iterator from another
return (this - &right);//HERE EVERYTHING IS FINE
}
err msg: Error 1 error C2110: '+' : cannot add two pointers
Run Code Online (Sandbox Code Playgroud)
为什么我只在一个地方而不是两个地方都收到错误?
fre*_*low 54
742 Evergreen Terrace + 1 = 743 Evergreen Terrace
742 Evergreen Terrace - 1 = 741 Evergreen Terrace
743 Evergreen Terrace - 741 Evergreen Terrace = 2
743 Evergreen Terrace + 741 Evergreen Terrace = ???
Mic*_*bus 38
在C++中禁止指针添加,你只能减去两个指针.
这样做的原因是减去两个指针给出了逻辑上可解释的结果 - 两个指针之间的内存偏移量.类似地,您可以从指针中减去或添加整数,这意味着"向上或向下移动指针".添加指针指针是很难解释的.结果指向者会代表什么?
万一您明确需要存储一个指针到一个地方,其地址是一些其他的两个地址的总和,你可以投两个指针int,增加intS,并转换回指针.但请记住,这个解决方案需要非常关注指针算法,这是你真正不应该做的事情.
| 归档时间: |
|
| 查看次数: |
16005 次 |
| 最近记录: |