After a bit more poking it looks like the RISC OS header problems can be avoided just by changing the compiler options. Which is good, because for a minute there I was wondering if anyone had actually tested the C++ compiler

The makefile settings I'm using are:
makefile:
TARGET := ../beebasm
WARNFLAGS := -Wall -W -Wcast-qual -Werror -Wcast-align -Wold-style-cast -Woverloaded-virtual -Wno-uninitalized
CXXFLAGS := -O3 -mthrowback $(WARNFLAGS)
LDFLAGS :=
PARAMS := -i ../demo.asm -do ../demo.ssd -boot Code
makefile.inc:
CC := gcc
CXX := gcc
LD := gcc
MKDIR := echo mkdir
RM := echo rm
ECHO := @echo
Removing -Wshadow is a work around for GCC's locale_facets.tcc where __ctype is defined in some inlined code, shadowing the definition in ctype.h
Adding -Wno-uninitialized hides lots of warnings about variables potentially being clobbered by longjump/vfork (neither of which your code seems to use). Most of these warnings come from GCC's fstream and sstream headers.
Removing -pedantic is a work around for unixlib's stdlib.h where inlined versions of atof, atoi and atol aren't marked as throwing exceptions, like their prototypes suggest they should.
The -s is gone from LDFLAGS because (a) all linking on RISC OS is static (untill GCC 4 with ELF support is released), and primarily (b) because specifying '-s' seems to confuse ld and it fails to find any of the libraries.
Also note the use of forward slashes instead of backslashes in PARAMS; unixlib's unix-to-RISC OS path conversion copes with forward slashes, but not backslashes. (You could also swap it for the proper RISC OS ^.demo/asm style path)
And since MKDIR was being fed a unix-style path but cdir only accepts RISC OS-style paths, I've justed swapped that with 'echo mkdir'. Me creating the objects folder manually is probably a lot simpler than hacking the makefile until cdir gets given a suitable path to use. Also 'make clean' won't work since RISC OS's 'remove' won't like the -r option, so I've just set that to 'echo rm'.
If you've got cygwin installed, then have you considered using cygwin's version of GCC instead of MinGW? You can use -mno-cygwin to build against the MinGW libraries instead of the cygwin DLLs. That way you can remove the mingw/cygwin paths from the makefile and make things a bit simpler for porting.