Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Ошибка: ссылка на ссылку


Автор: srd 10.3.2004, 19:57
Пишу функцию такого вида:

void func(std::string str1, std::string str2)
{

}

Эта функция используется следующим образом:

std::for_each(v.begin(), v.end(), std::bind1st(std::ptr_fun(func), "строка"));

В таком виде всё работает. Но если сделать передачу параметров по ссылке, т.е.
void func(std::string &, std::string &) или void func(const std::string &, const std::string &), то
при компиляции получаю такие ошибки:

Цитата

c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\functional(266): error C2529: '_Left' : reference to reference is illegal
c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\functional(272): error C2529: '_Right' : reference to reference is illegal
c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\functional(277): error C2529: '_Right' : reference to reference is illegal
c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\functional(278): error C2535: 'std::binder1st<_Fn2>::result_type std::binder1st<_Fn2>::operator ()(std::binder1st<_Fn2>::argument_type & ) const' : member function already defined or declared
        with
        [
            _Fn2=std::pointer_to_binary_function<std::string &,std::string &,void>
        ]


Самое обидное, что в книге Страуструпа есть аналогичные примеры с использованием именно константных ссылок. Плиз, подскажите, как обойти эту проблему?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)