用++和 - 运算符在C ++中更改结构的地址

时间:2012-10-05 17:12:09

标签: c++ struct operator-keyword

是否可以使用 - 或++运算符更改当前结构的地址,即:

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; }
};

2 个答案:

答案 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,这意味着它的地址不可更改。