about functions pointers

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?
Last edited on
Topic archived. No new replies allowed.