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;
}



Чувствую что жёско туплю ща, но нечего не приходит в голову....
Жду подсказки :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Гость_Гость_Алексей_*_*
сообщение 5.7.2012, 6:36
Сообщение #2





Гости








    


Цитата(Алексей1153 @ 5.7.2012, 6:00) *
что-то мне подсказывает, что функция должна быть статической


неа, можно не только для статик функций.... яж не просто так this туда передаю....



Цитата(Алексей1153 @ 5.7.2012, 6:00) *
а ещё - обращай внимание на warning'и , там много интересного написано бывает


усечение double в float32 это печально, но там так и задумано.... :)


и насчёт последней цитаты, читай неправильные слова, с правильным ударением :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- Гость_Алексей_*   Какает непонятная проблема с 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


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


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




RSS Текстовая версия Сейчас: 16.9.2019, 19:23