类型引用
template class T
class Foo
{
typedef T::SomeType SomeType;
};
这段代码在VC++中一点问题也没有,但是GCC并不允许,因为它不知道T::SomeType是什么。你需要改为:
template class T
class Foo
{
typedef typename T::SomeType SomeType;
};
通过typename T::SomeType告诉GCC,SomeType是一个类型名,而不是其他东西。
当然,这种情况不只是出现在typedef中。例如:
template class Container
void visit(const Container& cont)
{
for (Container::const_iterator it = cont.begin(); it != cont.end(); ++it)
...
}
这里的Container::const_iterator同样需要改为typename...[ 查看全文 ]