07 Oct, 2009, David Haley wrote in the 21st comment:
Votes: 0
Glad that you got things worked out. Basically, casting is the process of taking something of type X, and telling the compiler that it is actually of type Y. In this case, we're taking a more specific type (pointer to obj_data) and telling the compiler that it's a more general type (pointer to 'void', or put another way, pointer to something).

The normal way of casting is that you have an assignment something like this:
a = b
where a is of type X, and b is of type Y. But Y != X so you can't make the assignment. Therefore, to convince the compiler that this is in fact ok, you cast b's type to X, so that it allows the assignment.
It becomes: a = (X) b.

Now, for some strange reason, some people decided to cast things on the left-hand side of the assignment, which is just plain bizarre in this case. Older compilers let people get away with this, but more recent ones say "hey, no, you can't do that" and complain.

Unfortunately, casting is a somewhat complex topic in this instance (made worse by how bizarre a left-hand cast is!) so it's a little hard for new programmers to figure out how to fix it, or even to understand a solution that's given to them. So, this weirdness in the code is really quite unfortunate. :sigh:
20.0/21