Question: I have a class like so:

```
class Node {
    // data
    Node* next;
    void operator++(int);
};

```

And when I define the post-increment operator like so:

```
void Node::operator++(int) {
    this = this->next;
}

```

I get the error `Expression is not assignable` on `this = this->next;`.

What's up with this? How do I get `this` to point to `next`?

Answer: 
According to the C++ standard the `this` pointer is a *prvalue* expression (see [[class.this]](http://eel.is/c++draft/class.this)), however the assignment operator requires an *lvalue* as its left operand (see [[expr.ass]](http://eel.is/c++draft/expr.ass)).
You seem very confused in terms of what you are trying to do here. You have a `node` class which represents a node in the list. Typically one would also have an `iterator` class which represents the position in the list that you are currently at. It seems to me that you are trying to use `++` to iterate to the next item in a list, but to do that you would need the iterator as a class of it's own.

In general it makes no sense to assign to the `this` pointer - `this` refers to the current object context, you can't just change that context by setting the `this` pointer.

I hope this will help you somewhat.