这段代码怎么了?我想排序奇数,但即使留在他们的位置,为此功能,但编译器不会通过这个
有错误:
错误:必须调用对非静态成员函数的引用
并且有一个代码:
public:
std::vector<int> sortArray(std::vector<int> array)
{
std::vector<int> sortedArray(array);
std::sort ( sortedArray.begin() , sortedArray.end() , oddSort );
}
bool oddSort ( const int& left , const int& right ){
if ( left % 2 && right % 2 )
return left < right;
else if ( left % 2 )
return false;
else if ( right % 2 )
return true;
return left < right;
}
答案 0 :(得分:2)
sort
不是类的方法,因此它没有正确的this
指针,因此调用成员函数是个问题。
在任何上下文中使用非静态类成员时 允许使用this关键字(非静态成员函数体,成员 初始化列表,默认成员初始化者),隐含的这个 - &gt; 在名称之前自动添加,从而导致成员访问 表达式(如果成员是虚拟成员函数,则结果 在虚拟函数调用中)。
答案 1 :(得分:1)
所以:问题是成员函数需要一个static
指针,除非它们是std::sort
。并且this
不会给你一个static
指针,你也不需要它。因此,使select regexp_substr('aUNITED STATES :bUSCOMPANY,c7/1990.','[a-z](.*)[a-z](.*)[a-z](.*)',1,1,null,1)
, regexp_substr('aUNITED STATES :bUSCOMPANY,c7/1990.','[a-z](.*)[a-z](.*)[a-z](.*)',1,1,null,2)
, regexp_substr('aUNITED STATES :bUSCOMPANY,c7/1990.','[a-z](.*)[a-z](.*)[a-z](.*)',1,1,null,3)
from dual;
成为直接的解决方案。
答案 2 :(得分:0)
我建议你看一下。非静态成员函数和静态成员函数的类型之间存在差异。我相信cpp概念this需要像静态的那样