#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