轉:從VC++到GCC移植:談兩者語法差異
引用
是下麪的引用片段:
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());它!= 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:添加域操作員庫::
以下是一段引用片段:
template
class foo:public base
{
public:
void foo(){
base::base _ func();
Base::m _ Base _ member = 0;
}
};
0條評論