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

2008-02-23 05:40:21来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

  作者:许式伟 (版权声明

  类型引用

以下是引用片段:
  template
  class Foo
  {
  typedef T::SomeType SomeType;
  };

  这段代码在VC 中一点问题也没有,但是GCC并不允许,因为他不知道T::SomeType是什么。您需要改为:

以下是引用片段:
  template
  class Foo
  {
  typedef typename T::SomeType SomeType;
  };

  通过typename T::SomeType告诉GCC,SomeType是个类型名,而不是其他东西。

  当然,这种情况不只是出现在typedef中。例如:

以下是引用片段:
  template
  void visit(const Container& cont)
  {
  for (Container::const_iterator it = cont.begin(); it != cont.end(); it)
  ...
  }

  这里的Container::const_iterator同样需要改为typename Container::const_iterator。

[1] [2] [3] 下一页




标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇: C/C 中回调函数初探

下一篇: 什么是迭代跟递归算法?二者有什么区别?

热门词条
热门标签