이 std::all_of
호출에서 내가 잘못하고있는 것을 파악할 수 없습니다.std :: all_of 1 인수가있는 함수로 클래스 멤버 함수를 허용하지 않습니다.
class Statistics {
public:
bool isDataSet() const { return m_data.size() > 0; }
private:
std::vector<double> m_data;
};
통계 클래스의 각 인스턴스가 특정 객체에 해당
나는 클래스 통계가 있습니다.
다른 파일의 다른 함수에서 데이터가 으로 초기화 된 경우에만 통계를 표시하려는 경우 모두Statistics
인스턴스입니다. 나는 다음과 같은 방법으로 std::all_of
기능을 사용하려면 :
if(std::all_of(m_stats.begin(), m_stats.end(), &Statistics::isDataSet)) {
...
}
곳 std::vector<Statistics*> m_stats.
'술어 용어는 1 개 인수를 복용 함수에 평가하지 않는다'는 점에서 컴파일러 보고서 오류입니다. 내가 아는 한, 각 클래스 멤버는이 포인터를 첫 번째 매개 변수로 전달하므로 Statistics::isDataSet()
은 실제로 1 개의 매개 변수가있는 함수 여야합니다. 하지만 std::all_of
이 잘못 생각합니다.
std::all_of()
에 1 매개 변수가있는 함수로 Statistics::isDataSet()
을 사용해야한다고 가정합니다.
+1, 후자는 바인딩되지 않은 군중에 더 직관적이지만 둘 다 실행 가능합니다. – WhozCraig
고마워요! '[] (const Statistics * s) {return s-> isDataSet(); }'도 트릭을 했어! 왜 [x]() {return x-> isDtaSet();}가 작동하지 않습니까? –
@PavloDyban 마지막 람다는 __nulary__ 호출 가능한 객체 (함수)이지만 실제로는 단항 조건 자입니다. – zaufi