Trying to override new() to do that won't help because new only cares about allocating memory and knows nothing about types. Really, best option is a human-guided find-and-replace using a good editor.
Or figure out something different for the multi-platform stuff. Doing stuff in runtime that could be "easily" done compiletime seems bad. One somewhat standard way is to have a "platform.hpp" with all the #ifdefs, like
Code:
#ifdef LINUX_CONSOLE
#include "linux/platform.hpp"
#elsif LINUX_GEODE
#include "linux-geode/platform.hpp"
#elsif LINUX_X11
#include "linux-x11/platform.hpp"
#elsif DIRECTX
#include "directx/platform.hpp"
#elsif OPENGL
#include "opengl/platform.hpp"
#elsif WIN32
#include "win32/platform.hpp"
#endif