#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.에서() (개방) 및 확대를 호출 할 수 있어야
openAnyClass (1)의 1 개체의 개방() 함수를 호출 할 classA 또는 classB의 배열
open() -> 클래스 A와 클래스 B에서 서로 다른 구현을 가지며 클래스 A에서 open()을 여러 클라이언트와 max에서 호출 할 수 있습니다. 아니. 클라이언트가 # 정의되어 있습니다.
한 번에 하나의 open() 만 classA 또는 classB에서 호출됩니다. 나는 같은 코드의 여러 복사본을 갖고 싶지 않다.
저는 하나의 클래스 A와 클라이언트 중 하나의 open()을 호출하고 싶습니다.
예 : 아래 문에서 나는 client1의 클래스 A의 open()을 호출하려고합니다. openAnyClass (int)의 파라미터는 클라이언트 ID를 나타냅니다. 이는 또한 classB[1].open();
'openAnyClass(1) = classA[1].open();'
을 의미 할 수 있습니다.
동일한 메소드를 다른 방법으로 구현할 수 없습니다. 여러 개의 open() 함수가 무엇입니까? openAnyClass를 호출 할 때 Base (포인터가 클래스 A 또는 클래스 B의 인스턴스에서 상영 됨)에 포인터/참조를 전달하면이 포인터/참조에서 열기 또는 닫기를 호출 할 수 있으며 "자동으로"올바른 메소드가됩니다. "진짜"클래스에 따라 A :: open() 또는 B :: open()이 호출 됨 –
@ user1511617'openAnyClass()'및'closeAnyClass()'의 매개 변수는 무엇을 의미합니까? –
그래서 classA는 A의 배열이고 classB의 배열입니다. openAnyClass (1)을 호출하면 A의 모든 인스턴스에서 open()을 호출하고 closeAnyClass()는 classB의 모든 인스턴스에서 close()를 호출한다는 것을 의미합니다. 이것이 사실이라면, 질문은 정말로 공식화 된 복잡합니다. –