#include"Loki/functor.h"#include"Loki/typelistmacros.h"#pragma comment(lib,"loki.lib")
using namespace std;
Loki::Functor<void> tt;
class D
{
public:
Loki::Functor<void> FTOR;
};
D d;
void f3(Loki::Functor<void> ftor)
{
d.FTOR=ftor;
}
class C
{
void f1(int i)
{
cout<<i<<endl;
}
public:
void f2()
{
Loki::Functor<void,LOKI_TYPELIST_1(int)> ftor1(this,&C::f1);
Loki::Functor<void> ftor2(Loki::BindFirst(ftor1,2));
f3(ftor2);
};
};
int main()
{
C c;
c.f2();
d.FTOR();
}
Ругается так: Unhandled exception at 0x0040114a in testConsole.exe: 0xC0000005: Access violation reading location 0xfeeefeee.
у функтора из локи какие-то проблемы с копированием, или я туплю..
Здравствуйте, zeus_2003, Вы писали:
_>Ругается так: Unhandled exception at 0x0040114a in testConsole.exe: 0xC0000005: Access violation reading location 0xfeeefeee. _>у функтора из локи какие-то проблемы с копированием, или я туплю..
вообще то поискать по форуму
но фишка в том что в момент выгрузки менеджера памяти(который используют функторы) отсутствует rtti
кажется так
Здравствуйте, ioni, Вы писали:
I>вообще то поискать по форуму I>но фишка в том что в момент выгрузки менеджера памяти(который используют функторы) отсутствует rtti I>кажется так
rtti включен.
по форуму я искал, чето не нашел ниче. подскажите строку поиска, если уже было.
Здравствуйте, zeus_2003, Вы писали:
_>Здравствуйте, odisseyLM, Вы писали:
LM>>Советовал бы тебе написать под чем ты компилишь
_>MSVC 7.1
_>выпадает в деструкторе auto_ptr в d.FTOR. _>если d.FTOR не присваивать передваваемый ftor то все ок...
Не помню, но вероятно BindFirst присваивает указателю адрес 2..
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re: проблема с Loki
От:
Аноним
Дата:
10.01.06 22:54
Оценка:
Да хреново вообще это юзать. Есть boost, который покруче будет, чем подеие алексадреску, академический интерес? Трахайтесь, какая классная у локи поддержка.
V>?
V>Не помню, но вероятно BindFirst присваивает указателю адрес 2..
ну,... если это убрать, то тоже вылетает . в том же месте,
но вобще-то это нужно чтобы можно было вызвать d.FTOR() без указания параметра, который известен на этапе создания функтора.
Здравствуйте, zeus_2003, Вы писали:
_>Здравствуйте, ioni, Вы писали:
I>>вообще то поискать по форуму I>>но фишка в том что в момент выгрузки менеджера памяти(который используют функторы) отсутствует rtti I>>кажется так
_>rtti включен. _>по форуму я искал, чето не нашел ниче. подскажите строку поиска, если уже было.
извини ошибся имелся ввиду runtime а не rtti
и падало в момент завершения приложения
а как у тебя?
если нечего не помогает тогда отладчик в руки и вперед
Здравствуйте, ioni, Вы писали:
I>извини ошибся имелся ввиду runtime а не rtti I>и падало в момент завершения приложения I>а как у тебя? I>если нечего не помогает тогда отладчик в руки и вперед
именно так и падает в момент завершения приложения.
ты имеешь в виду что С runtime library для loki.lib и exe-шника используются разные?
если, да, то вместо #pragma comment бла-бла-бла,можно непосредственно cскомпилить src-файлы, добавив их в проект(там всвего 2 штуки: SmallObject.cpp и singleton.cpp), т.е. Runtime Lib для них будет использоваться указанный в настройках проекта(по умолчанию для Debug это SingleThread Debug).
но вообще это ниче не меняет, :+() Вообще как-то это странно и чувствую связано с кривизной рук +). моих, потому как параллельно использую схожий код в другом месте(в DLL) и там все работает.а эта тестовая программка никак не хочет +).