私が欲しいのは、一部のクラスメンバーのために時々private
と他の時間がpublic
になることです。これらのメンバーは、いくつかのモジュールからアクセス可能であり、他のメンバーがアクセスできないと考えられています。私的/保護/公衆がABIにどのような影響を与えますか?
イメージングこのクラス:internal
Xモジュールで
class Foo {
public:
...
private:
...
protected:
...
internal:
int x;
};
は次のように定義されます
#define internal public
およびモジュールYで、それは次のように定義されています:
#define internal private
だから、本当の問題をこのトリックが標準で受け入れ可能かどうか、またはクラスの署名を変更するかどうかです(またはどのようにしても、
は私がfriend
とPIMPL
は、ジョブのこの種のですが、friend
は非常に厄介取得することができますし、PIMPL
のパフォーマンス(間接およびインラインすることができないという事実は)私が働いているコードベースのために受け入れられないことを知っていますに。
はODR違反したがってUBのように聞こえます。おそらくUBはあなたが望むことをします。 – nwp
メンバーの可視性は、生成されたコードに渡されず、ABIには影響を与えません。また、ABIの影響を受けます。 –
'internal'マクロについては、その目的は何ですか?どのような問題が解決するはずですか?ユースケースや要件、またはこれにつながるデザインがありますか?これには[XY問題](http://xyproblem.info/)の匂いがあります。おそらく、あなたの要件やデザインを見直す時間ですか?また、「モジュール」はリンクされて同じプログラムの一部を構成しますか? –