#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);
}
我想實現這樣的功能。C++調用駐留在多個類中的函數
openAnyClass(1);
CloseAnyClass(2);
這兩個函數應該能夠從任何類A和B.調用open()和close()
openAnyClass(1)將呼叫在第一對象的open()函數classA或classB的數組。
open() - >將在類A和類B中具有不同的實現,並且classA中的open()可能會從多個客戶端調用,沒有。的客戶是#定義的。
一次只有一個open()來自任何classA或classB被調用。我不想有多個相同代碼的副本。
只有一個函數,我想要打開()任何類A和任何客戶端。例如:在下面的語句中,我想調用client1的class A的open()方法。 openAnyClass(int)的參數表示客戶端ID。這也意味着classB[1].open();
'openAnyClass(1) = classA[1].open();'
這樣做的最好方法是什麼?
不可能有不同的相同方法的實現 - 多重open()是什麼意思?如果您在調用openAnyClass時將指針/引用傳遞給Base(從A類或B類的實例上傳),那麼您將能夠在此指針/引用上調用open或close並「自動」地調用正確的方法根據「真實」類調用(A :: open()或B :: open()) – 2012-07-09 10:05:55
@ user1511617「openAnyClass()」和「closeAnyClass()」的參數是什麼意思? – 2012-07-09 10:13:04
所以classA是A的數組,classB的數組也是一樣。並調用openAnyClass(1),意味着在A的所有實例上調用open(),closeAnyClass()表示在classB的所有實例上調用close()。好的,如果是這樣的話,這個問題確實很複雜。 – 2012-07-09 10:24:27