Robert Clipsham Wrote:

> On 11/04/10 15:41, Nrgyzer wrote:
> > I want to do the following:
> >
> > struct MyStruct {
> >
> >     char[] structName;
> >
> >     public char[] toString() {
> >
> >             return structName;
> >
> >     }
> >     
> > }
> >
> > ...
> >
> > class MyClass {
> >
> >     private static void function(void*) callBack;
> >     private static void* callBackValue;
> >     ...
> >     static this() {
> >             MyStruct test = MyStruct();
> >             test.structName = "Struct name";
> >             callBack =&cb;
> >             callBackValue =&test;
> >     }
> >     ...
> >     public void cb(void* value) {
> >
> >             MyStruct temp = *((cast(MyStruct*) value));
> >             writefln(temp);
> >
> >     }
> >
> > }
> 
> Why the need for void* everywhere? Surely you could save the effort and 
> store it as a MyStruct?

Because I call MyClass.cb by using an other class... for example the 
Button-Class.

struct MyStruct {

        char[] structName;

        public char[] toString() {

                return structName;

        }
        
}

...

class MyClass {

        public static Button[] loadButtons() {
                
                Button[] buttons;
                
                for (int i=0; i < 10; i++) {
                        
                        MyStruct curStruct = MyStruct();
                        curStruct.structName = .toString(i);

                        buttons ~= new Button(cb, curStruct);

                }

                return buttons;

        }

        public static void cb(void* value) {

                MyStruct temp = *((cast(MyStruct*) value));
                writefln(temp);

        }

}

class Button {

        private static void function(void*) callBack;
        private static void* callBackValue;

        this(void function(void*) cB, void* cbValue) {

                callBack = cB;
                callBackValue = cbValue;

        }

        public void pressButton() {
                // This should call MyClass.cb
                callBack(callBackValue);

        }

}

For example... I click on a button on my OpenGL-gui, then I simply call the 
pressButton-method in my class Button which should call MyClass.cb with 
callBackValue which can be a value, class, struct or a similar datatype. To 
store different values/classes/structs... I cast all to a void-pointer. In this 
case I can use the Button-class in multiple situations.

Reply via email to