我的课看起来像这样:
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));
}
这些在课堂外工作得很好,但我无法找到正确的方法在他们作为类成员的上下文中传递sep_to_space()
' transform
s 的第四个参数。如果我将它们注释掉,其他所有东西都会编译并正确运行。
以上&A::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
恐怕目前在我头上。建议?