Следующим является мой тестовый код. Я просто хочу знать, какой тип точки. Но я получил ошибку при компиляции в строке «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) return false; return true; ' , когда вы можете написать ' return tmp! = NULL; ' – Dariusz