Function pointers between classes


i have 2 classes:  mainclass , subclass

subclass contains lot of variables , methods alter variables.  when alter variable in subclass want call function in mainclass tell new value of variable.  mainclass can things new value.

the code have @ moment follows:

mainclass.h
code: [select]

#include subclass.h
class mainclass
{
public:
mainclass();
~mainclass();
void subvaluechanged(byte new_value);
private:
subclass* sub_;
}

mainclass.cpp
code: [select]

#include mainclass.h
mainclass::mainclass()
{
    sub_= new subclass(subvaluechanged);
}
mainclass::~mainclass()
{
}
mainclass::subvaluechanged(byte new_value)
{
// here new_value
}

subclass.h
code: [select]

typedef void (bytefuncptr*)(byte);
class subclass
{
public:
subclass(void (*val_func)(byte));
       ~subclass();
        changevalue(byte new_val);
private:
        static bytefuncptr val_ptr_;
        byte value;
}

subclass.cpp
code: [select]

#include subclass.h
subclass::subclass(void (*val_func)(byte))
{
val_ptr_ = val_func;

}
subclass::~subclass()
{
}
subclass:changevalue(byte new_val)
{
     value = new_val;
     val_ptr_(new_val);
}

now i'm aware i'm doing wrong  - when declare  sub_ in mainclass::mainclass(), need send mainclass (i.e. this) function want call (subvaluechanged).

the issue i'm not sure syntax doing this.  i.e. how pass this to subclass?

if pass mainclass this, have include mainclass.h in subclass.h, isn't idea.

i'm guessing i'm trying quite common c++/c task , i'm trying find best way of doing it.  :)

cheers
paul

look @ this, might you.

http://www.cplusplus.com/doc/tutorial/inheritance/


Arduino Forum > Using Arduino > Programming Questions > Function pointers between classes


arduino

Comments