是否可以使用 - 或++运算符更改当前结构的地址,即:
mystruct* test = existing_mystruct;
test++ // instead of using: test = test->next_p;
我试图使用它,但它似乎是常量并给我一个错误:赋予此(不合时宜):
struct mystruct {
mystruct* next_p;
mystruct* prev_p;
void operatorplusplus () { this = next_p; }
void operatorminusminus() { this = prev_p; }
};
答案 0 :(得分:4)
对象在存在时在内存中具有常量地址。 但是,您可以将它们复制到新地址。
您尝试做的是在链表中前进。如果你重载它们,它可以用那些运算符完成。但是您需要在特殊的句柄类中定义它以包裹列表节点。
修改强>
我所描述的代码看起来有点像这样:
class mylist
{
struct mynode
{
//data
mynode* next;
mynode* prev;
} *curr;
public:
mylist& operator++() {curr = curr->next; return *this;}
};
当然,你想做边界检查等等,但这是一般的想法。
答案 1 :(得分:1)
没有。 this
指针的类型为mystruct * const
,这意味着它的地址不可更改。