#define classAnum 2;
#define classBnum 3;
class Base
{
virtual int open()=0;
virtual int close()=0;
}
class A:public Base
{
virtual int open();
virtual int close();
};
class B:public Base
{
virtual int open();
virtual int close();
}
int main()
{
A classA[classAnum];
B classB[classBnum];
openAnyClass(1);
CloseAnyClass(2);
}
このような機能を実現したい。
openAnyClass(1);
CloseAnyClass(2);
これらの2つの関数は、クラスAおよびBのいずれかからopen()およびclose()を呼び出すことができる必要があります。
openAnyClass(1)は、classAまたはclassBのいずれかの配列内の最初のオブジェクトのopen()関数を呼び出します。
open()->は、クラスAとクラスBで異なる実装になります。クラスAのopen()は、複数のクライアントと最大で呼び出される場合があります。番号。クライアントの数は#定義されています。
一度に、classAまたはclassBのいずれかから1つのopen()のみが呼び出されます。同じコードのコピーをいくつか持ちたくありません。
1つの関数だけで、クラスAとクライアントのいずれかのopen()を呼び出します。
たとえば、次のステートメントで、client1のクラスAのopen()を呼び出します。openAnyClass(int)のパラメーターは、クライアントIDを示します。これはまた意味することができますclassB[1].open();
'openAnyClass(1) = classA[1].open();'
これを行うための最良の方法は何ですか?