Пишу в функции-члене следующий код:
(файл .cpp, часть функции)
std::vector <std::complex<double> > Generator::Noise()
{
// локальный класс
struct FillRnd : std::unary_function<std::complex<double>, std::complex<double> >
{
private:
double Disp;
public:
FillRnd(const double &D) : Disp(D) {}
std::complex <double> operator () (const std::complex<double> &dd) const
{
return std::complex<double>(RandG(0.0, Disp), RandG(0.0, Disp));
}
};
...
std::vector <std::complex<double> > temp; temp.reserve(255);
temp.assign(255, std::complex<double>(0.0, 0.0));
std::transform(temp.begin(), temp.end(), temp.begin(), (FillRnd(1.0)));
...
return temp;
и получаю ошибку:
[C++ Error] Unit1.cpp(35): E2285 Could not find a match for 'std::transform<InputIterator,OutputIterator,UnaryOperation>(std::complex<double> *,std::complex<double> *,std::complex<double> *,FillRnd)
если же в .cpp-файле объявляю
..
struct ::FillRnd : std::unary_function<std::complex<double>, std::complex<double> >
..
а в .h-файле глобальную struct FillRnd, то все работает. Может так конечно и должно быть, но
хочеться определить почему возникает ошибка.