これを ProjectInstance のようなより基本的なものに typedef/alias するにはどうすればよいですか:
((ProjectType*)NamespaceOne::NamespaceTwo::ClassName::StaticVariable)->x=0;
これは静的クラスであり、毎回名前空間 + キャストで呼び出すのは面倒です。
これを何らかのエイリアスに単純化して、次のように参照できるようにするにはどうすればよいですか
ProjectInstance->x=0;
私はもともとこれらの線に沿って何かを考えていました:
#typedef ((ProjectType*)NamespaceOne::NamespaceTwo::ClassName::StaticVariable) ProjectInstance
ProjectInstance は、ProjecType* にキャストされた StaticVariable のエイリアスです。
NamespaceOne::NamespaceTwo::ClassName::StaticVariable
StaticVariable は BaseType のインスタンスです。ProjectType は BaseType を拡張します。ProjectType クラスに追加の変数 "x" があるため、単に StaticVariable を ProjectType にキャストしています。
私が避けようとしているのは、この静的変数にアクセスする必要がある各クラスでポインター/関数を宣言することです。
これまでのところ、解決策は「名前空間を使用する」ことですが、これは以前から認識していましたが、これまでに投稿された最良の解決策です。
したがって、元のコード行を次のように分割します。
((ProjectType*)ClassName::StaticVariable)->x=0;
別の解決策があります:
ClassName::ProjectStaticVariable->x=0;
「ClassName」クラス内に新しいポインターを作成することで、さらに削減することができました。
これをさらに削減するためのより良い方法はありますか?