crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Какает непонятная проблема с boost::bind, туплю чёт
Гость_Гость_Алексей_*_*
сообщение 5.7.2012, 3:43
Сообщение #1





Гости








    


Всем привет, особенно Iron Bug...


Вот на этой строчке выдает ошибку... (строчка вызывается в конструкторе Test)
CollisionBeginContact function = boost::bind(&Test::s1, this, _1)();


Ошибка 6 error C1903: не удается восстановить после предыдущих ошибок; остановка компиляции d:\code\boost_1_49_0\boost\bind\bind.hpp 69
Ошибка 3 error C2039: result_type: не является членом "`global namespace'" d:\code\boost_1_49_0\boost\bind\bind.hpp 69
Ошибка 4 error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "type" d:\code\boost_1_49_0\boost\bind\bind.hpp 69
Ошибка 5 error C2208: boost::_bi::type: нет членов, определенных с помощью этого типа d:\code\boost_1_49_0\boost\bind\bind.hpp 69
Ошибка 2 error C2825: F: должен представлять класс или пространство имен с последующим "::" d:\code\boost_1_49_0\boost\bind\bind.hpp 69


Вывод лога построения
Раскрывающийся текст

1>------ Построение начато: проект: PhusModelTest, Конфигурация: Debug Win32 ------
1> Test.cpp
1>d:\code\project\phusmodeltest\phusmodeltest\test.cpp(28): warning C4305: аргумент: усечение из "double" к "float32"
1>d:\code\boost_1_49_0\boost\bind\bind.hpp(69): error C2825: F: должен представлять класс или пространство имен с последующим "::"
1> d:\code\boost_1_49_0\boost\bind\bind_template.hpp(15): см. ссылку на создание экземпляров класса шаблон при компиляции "boost::_bi::result_traits<R,F>"
1> with
1> [
1> R=boost::_bi::unspecified,
1> F=void (__thiscall Test::* )(b2Fixture *,b2Fixture *,b2Contact *)
1> ]
1> d:\code\project\phusmodeltest\phusmodeltest\test.cpp(50): см. ссылку на создание экземпляров класса шаблон при компиляции "boost::_bi::bind_t<R,F,L>"
1> with
1> [
1> R=boost::_bi::unspecified,
1> F=void (__thiscall Test::* )(b2Fixture *,b2Fixture *,b2Contact *),
1> L=boost::_bi::list2<boost::_bi::value<Test *>,boost::arg<1>>
1> ]
1>d:\code\boost_1_49_0\boost\bind\bind.hpp(69): error C2039: result_type: не является членом "`global namespace'"
1>d:\code\boost_1_49_0\boost\bind\bind.hpp(69): error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "type"
1>d:\code\boost_1_49_0\boost\bind\bind.hpp(69): error C2208: boost::_bi::type: нет членов, определенных с помощью этого типа
1>d:\code\boost_1_49_0\boost\bind\bind.hpp(69): fatal error C1903: не удается восстановить после предыдущих ошибок; остановка компиляции
1> ContactListener.cpp
1> Создание кода...
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========


или так (тут ошибки выдаются немного иначе)
CollisionBeginContact function = boost::bind(&Test::s1, this)();

Ошибка 9 error C2298: return: недопустимая операция с указателем на выражение функции-члена d:\code\boost_1_49_0\boost\bind\mem_fn.hpp 342

Вывод лога построения
Раскрывающийся текст

1>------ Построение начато: проект: PhusModelTest, Конфигурация: Debug Win32 ------
1> Test.cpp
1>d:\code\project\phusmodeltest\phusmodeltest\test.cpp(28): warning C4305: аргумент: усечение из "double" к "float32"
1>d:\code\boost_1_49_0\boost\bind\mem_fn.hpp(318): warning C4180: квалификатор, примененный к типу-функции, не имеет смысла; пропуск
1> d:\code\boost_1_49_0\boost\bind\bind_template.hpp(344): см. ссылку на создание экземпляров класса шаблон при компиляции "boost::_mfi::Dm<R,T>"
1> with
1> [
1> R=void (b2Fixture *,b2Fixture *,b2Contact *),
1> T=Test
1> ]
1> d:\code\project\phusmodeltest\phusmodeltest\test.cpp(50): см. ссылку на создание экземпляров класса шаблон при компиляции "boost::_bi::bind_t<R,F,L>"
1> with
1> [
1> R=void (&)(b2Fixture *,b2Fixture *,b2Contact *),
1> F=boost::_mfi::Dm<void (b2Fixture *,b2Fixture *,b2Contact *),Test>,
1> L=boost::_bi::list1<boost::_bi::value<Test *>>
1> ]
1>d:\code\boost_1_49_0\boost\bind\mem_fn.hpp(326): warning C4180: квалификатор, примененный к типу-функции, не имеет смысла; пропуск
1>d:\code\boost_1_49_0\boost\bind\mem_fn.hpp(331): warning C4180: квалификатор, примененный к типу-функции, не имеет смысла; пропуск
1>d:\code\boost_1_49_0\boost\bind\mem_fn.hpp(345): warning C4180: квалификатор, примененный к типу-функции, не имеет смысла; пропуск
1>d:\code\boost_1_49_0\boost\bind\mem_fn.hpp(350): warning C4180: квалификатор, примененный к типу-функции, не имеет смысла; пропуск
1>d:\code\boost_1_49_0\boost\bind\mem_fn.hpp(362): warning C4180: квалификатор, примененный к типу-функции, не имеет смысла; пропуск
1>d:\code\project\phusmodeltest\phusmodeltest\test.cpp(65): warning C4244: аргумент: преобразование "int" в "float32", возможна потеря данных
1>d:\code\boost_1_49_0\boost\bind\mem_fn.hpp(342): error C2298: return: недопустимая операция с указателем на выражение функции-члена
1> d:\code\boost_1_49_0\boost\bind\mem_fn.hpp(341): при компиляции функции-члена "void (&boost::_mfi::Dm<R,T>::operator ()(T *) const)" класса шаблон
1> with
1> [
1> R=void (b2Fixture *,b2Fixture *,b2Contact *),
1> T=Test
1> ]
1> d:\code\boost_1_49_0\boost\bind\bind_template.hpp(344): см. ссылку на создание экземпляров класса шаблон при компиляции "boost::_mfi::Dm<R,T>"
1> with
1> [
1> R=void (b2Fixture *,b2Fixture *,b2Contact *),
1> T=Test
1> ]
1> d:\code\project\phusmodeltest\phusmodeltest\test.cpp(50): см. ссылку на создание экземпляров класса шаблон при компиляции "boost::_bi::bind_t<R,F,L>"
1> with
1> [
1> R=void (&)(b2Fixture *,b2Fixture *,b2Contact *),
1> F=boost::_mfi::Dm<void (b2Fixture *,b2Fixture *,b2Contact *),Test>,
1> L=boost::_bi::list1<boost::_bi::value<Test *>>
1> ]
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========



вырезки кода:
typedef boost::function<void(b2Fixture* this_fixture, b2Fixture* front_fixture, b2Contact* contact)> CollisionBeginContact;

....

void Test::s1(b2Fixture* this_fixture, b2Fixture* front_fixture, b2Contact* contact)
{
    std::cout << "CollisionBeginContact: " << std::endl;
}



Чувствую что жёско туплю ща, но нечего не приходит в голову....
Жду подсказки :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Iron Bug
  опции профиля:
сообщение 6.7.2012, 20:34
Сообщение #2


Профессионал
*****

Группа: Модератор
Сообщений: 1611
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 219 раз(а)




Репутация:   12  


это может быть проблемой компилятора:
Цитата
Inappropriate use of bind<R>(f, ...)

The bind<R>(f, a1, a2, ..., aN) form supports arbitrary function objects.

It is possible (but not recommended) to use this form with functions or member function pointers, but only on compilers that support partial ordering. In particular, MSVC up to version 7.0 does not fully support this syntax for functions and member function pointers.

(http://www.boost.org/doc/libs/1_49_0/libs/bind/bind.html#Q_forms)

старые компиляторы не поддерживают частичные списки параметров.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- Гость_Алексей_*   Какает непонятная проблема с boost::bind   5.7.2012, 3:43
- - Алексей1153   что-то мне подсказывает, что функция должна быть с...   5.7.2012, 6:00
- - Гость_Алексей_*   Цитата(Алексей1153 @ 5.7.2012, 6:00) что-...   5.7.2012, 6:36
- - Iron Bug   bind тут ни при чём. Алексей1153 правильно сказал,...   5.7.2012, 7:34
- - Гость_Алексей_*   Ясно.... уже не первый раз наезжаю на похожие гра...   5.7.2012, 7:46
- - Гость_Алексей_*   А вот теперь возник вопрос Я походу достаю детски...   5.7.2012, 8:02
- - Гость_Алексей_*   Мысли в слух... И вот ещё, таблицы составляются в...   5.7.2012, 8:29
- - Гость_Алексей_*   чёт забыл ещё отписать момент, сделал функцию void...   5.7.2012, 9:33
- - Iron Bug   если метод не виртуальный и объект не разрушен в м...   6.7.2012, 7:49
- - Гость_Алексей_*   Проблема была решена, (вчера помоем форум упал, по...   6.7.2012, 18:06
- - Iron Bug   это может быть проблемой компилятора: ЦитатаInappr...   6.7.2012, 20:34
- - Гость_Алексей_*   Студию скачал где то пол года назат, с сайта Micr...   6.7.2012, 21:15


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


4 чел. читают эту тему (гостей: 4, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 24.11.2024, 21:42