I는 다음과 같습니다 클래스가 있습니다 클래스 외부함수 템플릿 클래스 멤버 내의 변환 알고리즘 매개 변수에서 단항 연산자 함수를 가리키는 방법은 무엇입니까?
class A
{
public:
class variables_map vm /*! A boost::program_options variable map containing all program_options in use. */;
char sep_to_space(char c);
template <typename T>
void VectorFromOption(char * sOption, vector<T> & n);
};
char A::sep_to_space(char c){
return c == ',' || c == '<' || c == '>' ? ' ' : c;
}
template <typename T>
void A::VectorFromOption(char * sOption, vector<T> & n)
string s=A::vm[sOption].as<string>();
transform(s.begin(), s.end(), s.begin(), &A::sep_to_space);
stringstream ss(s);
copy(istream_iterator<T>(ss), istream_iterator<T>(), std::back_inserter(n));
}
이 잘 작동을하지만, 나는 그들의 존재 반원의 맥락에서 transform
의 4 번째 매개 변수로 sep_to_space()
을 통과하는 올바른 방법을 찾을 수 없습니다. 내가 주석을 달면 모든 것이 컴파일되고 올바르게 실행됩니다. 현재 내 머리에, 난 두려워입니다
1>c:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\algorithm(671) : error C2064: term does not evaluate to a function taking 1 arguments
:
위 &A::sep_to_space
는 수수께끼 오류가 발생합니다. 제안?
아직 C++ 11 지원이 없습니다. 나는 'VectorFromOption'을 .h 파일로 옮긴 후 범위를 유지할 다른 방법을 찾을 수 없기 때문에'sep_to_space' 멤버를 만들었습니다. 'sep_to_space'를 정적 멤버로 만드는 것이 최선의 해결책이라고 생각합니다. 고맙습니다. – jwilson75503