2 つの異なるライブラリで同じコードをコンパイルする必要があります。1 つはオブジェクトを const にすることを許可し、もう 1 つは許可しません。現在実装されているソリューションは次のようになります。
#ifdef (OLDLIB)
ClassFoo TheFoo = Bar();
#else
const ClassFoo TheFoo = Bar();
#endif
これは、さまざまなクラスで何度も使用され、読みやすさを妨げます。どこかで差別化したい。
私は次のように言うことができると思います:
#ifdef (OLDLIB)
#define CLASS_FOO ClassFoo
#define CLASS_BAR ClassBar
#else
#define CLASS_FOO const ClassFoo
#define CLASS_BAR const ClassBar
#endif
CLASS_FOO TheFoo = Bar();
CLASS_BAR TheBar = FooBar();
しかし、私はプリプロセッサが嫌いです。上記を行う素敵な C++ の方法はありますか? ありがとう。
更新 1:Peter Wood が言ったように、それらを非 const でインスタンス化することは可能です。文を変えました。