我正在将Windows代码移植到Linux。所以,我有一个代码
template <typename PROPERTY,typename T_COORDINATE=am3::model::Coordinates>
struct Provider
{
virtual PROPERTY GetState(am3::model::common::Point<T_COORDINATE>* point,const PROPERTY* const typeTrait)=0;
virtual PROPERTY GetState(am3::model::common::Point<T_COORDINATE>* point)
{
const PROPERTY* const typeTrait_=nullptr;
return this->GetState(point,typeTrait_);
}
template <typename T>
PROPERTY GetState(am3::model::common::Point<T_COORDINATE>* point);
template <>
PROPERTY GetState<PROPERTY>(am3::model::common::Point<T_COORDINATE>* point)
{
const PROPERTY* const typeTrait_=nullptr;
return this->GetState(point,typeTrait_);
}
};
和MSVC编译它没有问题,但是 g ++告诉我错误:非命名空间范围'struct am3 :: model :: contract :: Provider'
中的显式特化我试过重载它,在struct body之后专门化函数等等, (Specialization of templated member function in templated class等等。)但我现在卡住了。 有谁有想法,怎么做?非常感谢提前!