【发布时间】:2016-12-24 14:20:21
【问题描述】:
#include <iostream>
#include <algorithm>
#include <numeric>
#include <vector>
using namespace std;
class C
{
public:
vector<int> CSort();
bool Func(int x, int y);
private:
vector<int> data;
};
vector<int> C::CSort()
{
vector<int> result(data.size(), 0);
iota(result.begin(), result.end(), 0);
sort(result.begin(), result.end(), Func);
return result;
}
bool C::Func(int x, int y)
{
return (data[x] > data[y]);
}
在我上面定义的类C 中,我想使用成员函数Func 获得data 和std::sort 的顺序向量。结果是一个错误
'C::Func':非标准语法;使用 '&' 创建指向成员的指针
我相信这与Why doesn't reference-to-member exist in C++有关。
但是,我想不出在std::sort 中引用此函数的正确方法。如何正确实施?
【问题讨论】:
-
@ArchbishopOfBanterbury 你是对的,初始化一个降序向量是一个很好的提醒,非常感谢 ;)
-
附带说明,
std::sort(result, &C::Func);应该与即将推出的 Ranges TS 一起开箱即用。