1
특정 개체 인스턴스의 가상 함수가 특정 구현에 있는지 확인하려고합니다.개체 인스턴스에서 가상 함수를 확인하는 방법은 특정 구현입니다.
#include <cstdio>
using namespace std;
class A
{
public:
virtual void method()
{
printf("This is from A \n");
}
};
class B : public A
{
public:
virtual void method()
{
printf("This is from B \n");
}
};
int main()
{
B b;
b.method();
if (b.&method == &B::method)
{
printf("Horray! simple. \n");
}
return 0;
}
을하지만 분명히 선 if (b.&method == &B::method)
이 작동하지 않습니다 직관적으로 다음과 같은 코드 세그먼트처럼 보인다.
어떻게하면 좋을지 제안 해 주실 수 있습니까? 감사.
이유를 설명 할 수 있다면 * 왜 * 우리는 당신을 더 잘 도와 줄 수 있을까요? 해결할 실제 문제는 무엇입니까? 관련 읽기 [XY 문제에 관하여] (http://xyproblem.info/). –
이것이 B 형의 객체 인 경우, B에 대한 메소드 오버로드가 차갑다. 그래서 그 질문을 이해할 수 없습니다. –
나는 이것에 대한 답을 모르며, OO 관점에서 볼 때, 실제로 틀리다. 가상 함수를 사용하는 경우 가상 함수를 호출하고 구현에 대해 염려하지 않아야합니다. 이 규칙에 대한 예외를 처리 할 때 대개 객체의 유형이 검사됩니다 ([typeid] (http://en.cppreference.com/w/cpp/language/typeid), dynamic_cast) – stefaanv