次のコードは、Visual Studio を使用する Windows で正常にコンパイルされます。
class_handle(base *ptr) : ptr_m(ptr), name_m(typeid(base).raw_name()) { signature_m = CLASS_HANDLE_SIGNATURE; }
Linux で同じコードをコンパイルしようとすると、次のようになります。
error: ‘const class std::type_info’ has no member named ‘raw_name’
私が理解している限りでraw_name
は、Microsoft固有の実装です。Windows システムと Linux システムの両方でコンパイルできるようにコードを変更するにはどうすればよいですか?
EDIT1元のコードを変更したくないので、gcc でコンパイルするための回避策が必要です。それは可能ですか?
EDIT2は#define raw_name name
トリックを行いますか?