正文

转:从VC++到GCC移植:谈两者语法差异2007-04-20 22:16:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/lym51/25049.html

分享到:

以下是引用片段:
  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。

阅读(2080) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册