-
October 17th, 2013, 08:34 AM
#10
Re: template for events
now i'm testing inside of a class, but i get several errors
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
and how i use it:
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();
}
"what i need is the class call the events object and pass to it same values(depending on object class members).
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>:perator()(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?
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|