STL и локальные классы
От: LDima Россия  
Дата: 26.03.03 13:34
Оценка:
Пишу в функции-члене следующий код:

(файл .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, то все работает. Может так конечно и должно быть, но
хочеться определить почему возникает ошибка.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.