Hmm, not sure I follow you.
C++ has no problem with void* at all, in fact, C++ introduced the void pointer, which C later adopted (rather than using unsigned char* etc).
I certainly have experienced no problems with the OS3.5 or 3.9 includes relating to void*. In fact the only problems I have ever encountered was a scope of resolution problem to do with library base names that happen to have global pointers of the same name (eg IntuitionBase* IntuitionBase), which was resolved by using :: operator to prefix the pointer.
What C++ doesn't like is implicit pointer conversion from void, which is allowed in C, or from any type to another that isn't defined directly or in terms of base/subclass heirarcchy.
So you can't do things like
int* n = AllocVec(1024, MEMF_PUBLIC);
since AllocVec returns APTR (usually typedefed' as void*).
The OS was written with in C in mind, and as such has some of C's legacy problems that mean some example sources may not compile out of the box in C++ mode, but is quite managable from C++ provided you spot any violations of C++ typing rules.
It sounds like you have a configuration problem. Something I hate about gcc is that it is such a {bleep} to set up usually...
Good luck :-)