交差型を手動で作成せずに2つの型の和集合を作成できますか?C++:仮想基底クラス継承のない2つの型の結合
私の文脈での交差クラスは完全に無意味なので、コードを作成するとコードユーザーが混乱することがあります。
私の実用的なケース: 私は多くのモジュールの階層的なツリー状の構造であるデジタルハードウェアシミュレータを説明しています:
class port;
class module0 {
port a,b,c;
}
class module1 {
port c,d,e;
}
私は、この2種類の和集合を作成する必要があります。
class top_level_module {
port a,b,c,d,e;
}
私は(これは私が求めている問題である)ユニオン型を作成するためのいくつかのtechiqueがなければならないことを想像:
class top_level_module : union_type < module0, module1 > {
// port a,b,c,d,e;
}
しかし、私は何も見つかりませんでした。
// this is a meaningless type in my context
class intersection_of_module0_module1 {
port c;
}
class module0: virtual intersection_of_module0_module1 {
port a,b;
}
class module1: virtual intersection_of_module0_module1 {
port d,e;
}
class top_level_module : module0, module1 {
// port a,b,c,d,e;
}
もう一つのオプションは、 'top_level_module'が' module0'のインスタンスと 'module1'のインスタンスを所有し、内部ポートへのアクセスを制御する構成です。しかし、2つの間で関数が必要な場合は、おそらく仮想基本クラスのほうが良いでしょう。 – AndyG