// Copyright 2001 Karl Einar Nelson #include #include #ifdef SIGC_CXX_NAMESPACES using namespace std; using namespace SigC; #endif int result=1; class Foo : public Object { int i; public: void foo() { cout << "hello "<> test 1 (assignment to members)" << endl; { Foo f; Slot0 s; cout << " call nothing connected" <> test 2 (call after destruction)" << endl; Slot0 s; { Foo f; cout << " call within scope" <> test 3 using derived classes to add lifetime"< s = slot(b, &A::foo); s(); } return !(result==19); } #if defined(UNDER_CE) || (defined(_MSC_VER)&&defined(_DEBUG)) // see eVC4/README.txt void helper() { void (*proxy)(void*) = 0; Foo* control1 = 0; B* control2 = 0; void* object = 0; void (Foo::*method1)() = 0; void (A::*method2)() = 0; SigC::ObjectSlotNode node1( proxy,control1,object,method1); SigC::ObjectSlotNode node2( proxy,control2,object,method2); } SigC::ObjectSlotNode::ObjectSlotNode(FuncPtr proxy, Foo* control, void* object, void (Foo::*method)()) : SlotNode(proxy) { init(control,object,reinterpret_cast(method)); } SigC::ObjectSlotNode::ObjectSlotNode(FuncPtr proxy, B* control, void* object, void (A::*method)()) : SlotNode(proxy) { init(control,object,reinterpret_cast(method)); } #endif