C++에서 포인터를 사용하여 클래스 B에서 클래스 A의 메서드 멤버를 호출하려면 어떻게해야합니까? 그건 그렇고 클래스 A와 B는 다른 유형입니다.다른 클래스 유형의 멤버 함수에 변수 가리키기
포인터가 멤버 함수를 가리키고있을 때 클래스 내의 멤버 함수 만 가리킬 수 있다는 것을 읽었습니다. 하지만 어떻게 수업 외부의 멤버 함수를 가리킬 수 있습니까?
예를 들어: 나는 다음과 같이 실행할 수 있습니다 생각
class A
{
public:
int add(int x)
{
return x+x;
}
};
int main()
{
typedef int (A::*pointer)();
pointer func = &A::add;
A objt;
B objt2;
obt2.*func(2);// the compiler give me an error of incompatible with object type ‘B’
return 0;
}
시도 '2' –
@Chet는 : 그 인스턴스에'A' 멤버 함수를 호출한다는 사실을 해결하지 못한다 'B'는 무의미하다. – ildjarn
이 개념으로 해결하려는 모든 문제는 아마도 다른 방법을 사용하면 더 쉽게 해결되고 * 더 나은 방법 일 것입니다. C++에서 메서드와 함수는 Smalltalk 및 다른 순수 OO 언어와 달리 동일합니다. 상속이나 목표를 달성 할 수있는 디자인 패턴과 같은 언어의 실질적인 기능을 사용하려면 솔루션을 재정비하십시오. 실제 목표를 공유하면 누군가가 올바른 접근법을 제안 할 수 있습니다. –