次のようなクラスがあります。
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));
}
これらはクラス外では正常に動作しますが、クラス メンバーであるというコンテキストで の 4 番目のパラメーターsep_to_space()
として渡す正しい方法が見つかりません。transform
それらをコメントアウトすると、他のすべてが正しくコンパイルおよび実行されます。
上記&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
それは現在私の頭の中にありますが、残念です。提案?