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

文章作者 100test 发表时间 2007:09:29 13:51:39
来源 100Test.Com百考试题网


类型引用

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。

基类成员引用

template  

class Foo : public Base

{

public:

void foo() {

base_func().

m_base_member = 0.

}

}.

这段代码在VC 中同样没有问题,但是GCC中不能通过。因为GCC并不知道base_func,m_base_member是什么。对于这个问题,你可以有两种改法:

改法1:加上域作用符Base::

template  

class Foo : public Base

{

public:

void foo() {

Base::base_func().

Base::m_base_member = 0.

}

}.



相关文章


金山W Office实用自动化技巧四则
金山W Office文档编辑实用技巧五则
三个优化操作让W 文档结构图更好用
W 演示2005轻松插Flash课件变生动
从VC 到GCC移植:谈两者语法差异
基于OpenGL的三维曲面数据场动态显示
基于HOOK和MMF的Windows密码渗透技术
新设想——VC开发多语言界面支持的新招
理解MFC控制条窗口布局原理之一
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛