紧急求助各位!!!
前提:有两个类 A和B,B是A的子类
A中定义了一个成员函数:
template<class T> static A* getInstance(std::string dllname)
{
DllHost_t::iterator it = m_dllhost.find(dllname);
if( it!=m_dllhost.end())
return it->second.first;
else
{
if (loadDll(dllname.c_str()))
{
A* p = (A*) new T();
m_dllhost[dllname].first = p;
return p;
}
}
return NULL;
}
在B中定义了一个成员函数:
static B& getInstance()
{
A* pobject = A::getInstance<B>(“dllname”);
return *(dynamic_cast<B*>(pobject));
}
问题是在vc9中编译没有问题,而在vc6中编译时,标注为红色行会出现error:
error C2275: 'B' : illegal use of this type as an expression.
不知道为什么,请各位高人帮帮忙,非常紧急,谢谢各位了。