首页 相关文章 从VC++到GCC移植:谈两者的语法差异

从VC++到GCC移植:谈两者的语法差异

类型引用
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...[ 查看全文 ]

2016-02-19 标签:

从VC++到GCC移植:谈两者的语法差异的相关文章

手机页面
收藏网站 回到头部