다음은 테스트 코드입니다. 나는 단지 어떤 유형의 요점인지 알고 싶다. 그러나 "bool instanceOf (A * msg)"줄에서 컴파일하는 동안 오류가 발생했다. 그것을 고치는 법. 고마워.'<'토큰 앞에 예상 된 이니셜 라이저
#include <iostream>
using namespace std;
class A
class B : public A
class C : public A
template <class T>
bool instanceOf<T>(A* msg)
{
T *tmp = dynamic_cast<T *>(msg);
if(NULL == tmp)
return false;
return true;
}
void resolveMsgType(A* msg)
{
if(instanceOf<B>(msg))
{
cout<<"this is class B"<<endl;
}else if(instanceOf<C>(msg)){
cout<<"this is class C"<<endl;
}else{
cout<<"error"<<endl;
}
}
int main()
{
A *a;
a = new B();
resolveMsgType(a);
a = new C();
resolveMsgType(a);
return 0;
}
'class A'는 실제 코드가 아니라 단지 자리 표시 자일뿐입니다. –
사이드 노트에 왜 사용 : 'if (NULL == tmp) false를 반환; return true; 쓸 수있는 경우 'return tmp! = NULL; ' – Dariusz