我目前工作的一个集类在C++当然这是从vector<T>
推导默认参数。方法作为一种方法
在我来到这里我需要实现一个名为index()
功能这显然会返回(如果该集合包含的话),这些组中的对象的指数点一个点。 在写全班我来到这里我需要重载这些index()
方法,这其中包括公共点。 因此,这里有我的两类方法: 1日。 3个PARAMS:
size_t index (T const& x,size_t const& l, size_t const& r) const
{
if(l > size()||r>size())
throw("Menge::index(): index out of range.");
//cut the interval
size_t m = (l+r)/2;
// x was found
if(x == (*this)[m])
return m;
// x can't be found
if(l==m)
return NPOS;
//rekursive part
if(x < (*this)[m])
return index(l,m,x);
return index(m+1,r,x);
}
第二届一个PARAM:
bool contains (T const& elem) const{
return index(elem, 0, size()-1)!=NPOS;
}
关键是我不想写这2种方法,它可能如果有可能被合并成一个。我想到了index()
方法的默认值,所以我会写的方法,头似:
size_t index (T const& x, size_t const& l=0, size_t const& r=size()-1)const;
它给我的错误: Elementfunction can't be called without a object
思考这个错误后,我试着编辑为:
size_t index (T const& x, size_t const& l=0, size_t const& r=this->size()-1)const;
但是,这给我的错误:You're not allowed to call >>this<< in that context.
也许我错过ED的事情,但是请让我知道如果你谁能告诉我要么是可以调用的方法作为默认PARAM,还是不行。
*默认参数值必须是编译时间常数。*事实并非如此。请参阅http://ideone.com/PWFFHS。 –
@RSahu感谢您的纠正。 –
@RSahu所以没有办法做到这一点? –