i'm build 1 class that let me do a function and change it too:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
class event
{
private:
void (*foo)(...);
public:
event(void (*foo1)(...))
{
foo=foo1;
}
void operator()(...)
{
foo();
};
event& operator()(void (*foo1)(...))
{
foo=foo1;
return *this;
};
event& operator = (void (*foo1)(...))
{
foo=foo1;
return *this;
};
};
|
and heres how i use it:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
class test
{
public:
event Soma;
void write(string a)
{
cout << a;
Soma();
}
};
test a;
int main()
{
a.Soma = []()
{
cout<<"\nMessage Printed\n" ;
return 0;
};
a.write("hello world");
cin.get();
return 0;
}
|
errors messages:
C:\Users\Joaquim\Documents\CodeBlocks\My Class\main.cpp|19|error: use of deleted function 'test::test()'|
C:\Users\Joaquim\Documents\CodeBlocks\My Class\main.cpp|7|note: 'test::test()' is implicitly deleted because the default definition would be ill-formed:|
C:\Users\Joaquim\Documents\CodeBlocks\My Class\main.cpp|7|error: no matching function for call to 'event::event()'|
C:\Users\Joaquim\Documents\CodeBlocks\My Class\main.cpp|7|note: candidates are:|
C:\Users\Joaquim\Documents\CodeBlocks\My Class\events.h|12|note: event::event(void (*)(...))|
C:\Users\Joaquim\Documents\CodeBlocks\My Class\events.h|12|note: candidate expects 1 argument, 0 provided|
C:\Users\Joaquim\Documents\CodeBlocks\My Class\events.h|6|note: constexpr event::event(const event&)|
C:\Users\Joaquim\Documents\CodeBlocks\My Class\events.h|6|note: candidate expects 1 argument, 0 provided|
C:\Users\Joaquim\Documents\CodeBlocks\My Class\events.h|6|note: constexpr event::event(event&&)|
C:\Users\Joaquim\Documents\CodeBlocks\My Class\events.h|6|note: candidate expects 1 argument, 0 provided|
C:\Users\Joaquim\Documents\CodeBlocks\My Class\main.cpp||In function 'int main()':|
C:\Users\Joaquim\Documents\CodeBlocks\My Class\main.cpp|24|error: invalid user-defined conversion from 'main()::__lambda0' to 'void (*)(...)' [-fpermissive]|
C:\Users\Joaquim\Documents\CodeBlocks\My Class\main.cpp|24|note: candidate is: main()::__lambda0::operator int (*)()() const <near match>|
C:\Users\Joaquim\Documents\CodeBlocks\My Class\main.cpp|24|note: no known conversion for implicit 'this' parameter from 'int (*)()' to 'void (*)(...)'|
||=== Build finished: 3 errors, 0 warnings (0 minutes, 1 seconds) ===|
i'm using Code Blocks by several reasons.
anyone can advice me, please?