now i'm testing inside of a class, but i get several errors :(
and how i use it:Code://events.h
#ifndef events_H_INCLUDED
#define events_H_INCLUDED
#include <functional>
#include <vector>
template <typename ... b>
class events
{
public:
typedef std::function<void(b...argx )> OnSomethingHandler;
events(OnSomethingHandler Handler)
{
handlers_=Handler;
}
void operator ()(b... args)
{
handlers_(args...);
}
events& operator = (OnSomethingHandler Handler)
{
handlers_ = Handler;
return *this;
}
private:
OnSomethingHandler handlers_;
};
#endif // events_H_INCLUDED
"what i need is the class call the events object and pass to it same values(depending on object class members).Code:#include <iostream>
#include "events.h"
using namespace std;
class test
{
private:
int x=20;
int y=0;
public:
events<int, int> created;
events<int, int> move;
test()
{
created([](int a, int b) { ; });
created(x,y);
}
void setX(int s)
{
x=s;
move=([](int a, int b) { ; });
move(x,y);
}
};
int main()
{
test a;
a.created=[](int a, int b)
{
if (b==0)
cout << "you can't divide by zero";
else
cout << (a/b);
};
a.created(8,2);
a.Move=[](int a)
{
if (a<0)
cout << "hide";
else
cout << "show";
}
a.setX(10);
cin.get();
}
but seems that i get several errors:
like declaring 2 events:(
heres the errors messages:
C:\Users\Joaquim\Documents\CodeBlocks\My Class\main.cpp||In constructor 'test::test()':|
C:\Users\Joaquim\Documents\CodeBlocks\My Class\main.cpp|16|error: no matching function for call to 'events<int, int>::events()'|
C:\Users\Joaquim\Documents\CodeBlocks\My Class\main.cpp|16|note: candidates are:|
C:\Users\Joaquim\Documents\CodeBlocks\My Class\events.h|13|note: events<b>::events(events<b>::OnSomethingHandler) [with b = {int, int}; events<b>::OnSomethingHandler = std::function<void(int, int)>]|
C:\Users\Joaquim\Documents\CodeBlocks\My Class\events.h|13|note: candidate expects 1 argument, 0 provided|
C:\Users\Joaquim\Documents\CodeBlocks\My Class\events.h|8|note: events<int, int>::events(const events<int, int>&)|
C:\Users\Joaquim\Documents\CodeBlocks\My Class\events.h|8|note: candidate expects 1 argument, 0 provided|
C:\Users\Joaquim\Documents\CodeBlocks\My Class\events.h|8|note: events<int, int>::events(events<int, int>&&)|
C:\Users\Joaquim\Documents\CodeBlocks\My Class\events.h|8|note: candidate expects 1 argument, 0 provided|
C:\Users\Joaquim\Documents\CodeBlocks\My Class\main.cpp|16|error: no matching function for call to 'events<int, int>::events()'|
C:\Users\Joaquim\Documents\CodeBlocks\My Class\main.cpp|16|note: candidates are:|
C:\Users\Joaquim\Documents\CodeBlocks\My Class\events.h|13|note: events<b>::events(events<b>::OnSomethingHandler) [with b = {int, int}; events<b>::OnSomethingHandler = std::function<void(int, int)>]|
C:\Users\Joaquim\Documents\CodeBlocks\My Class\events.h|13|note: candidate expects 1 argument, 0 provided|
C:\Users\Joaquim\Documents\CodeBlocks\My Class\events.h|8|note: events<int, int>::events(const events<int, int>&)|
C:\Users\Joaquim\Documents\CodeBlocks\My Class\events.h|8|note: candidate expects 1 argument, 0 provided|
C:\Users\Joaquim\Documents\CodeBlocks\My Class\events.h|8|note: events<int, int>::events(events<int, int>&&)|
C:\Users\Joaquim\Documents\CodeBlocks\My Class\events.h|8|note: candidate expects 1 argument, 0 provided|
C:\Users\Joaquim\Documents\CodeBlocks\My Class\main.cpp|17|error: no match for call to '(events<int, int>) (test::test()::__lambda0)'|
C:\Users\Joaquim\Documents\CodeBlocks\My Class\events.h|8|note: candidate is:|
C:\Users\Joaquim\Documents\CodeBlocks\My Class\events.h|18|note: void events<b>::operator()(b ...) [with b = {int, int}]|
C:\Users\Joaquim\Documents\CodeBlocks\My Class\events.h|18|note: candidate expects 2 arguments, 1 provided|
C:\Users\Joaquim\Documents\CodeBlocks\My Class\main.cpp||In function 'int main()':|
C:\Users\Joaquim\Documents\CodeBlocks\My Class\main.cpp|43|error: 'class test' has no member named 'Move'|
C:\Users\Joaquim\Documents\CodeBlocks\My Class\main.cpp|50|error: expected ';' before 'a'|
||=== Build finished: 5 errors, 0 warnings (0 minutes, 6 seconds) ===|"
what i'm doing wrong?