cocoa - objective c++ accessing an NSSlider from c++ callback -
appcontroller.h
@interface appcontroller : nsobject { } @property (retain) iboutlet nsslider * myslider; void setmyslider (nsslider *ns);// c function
appcontroller.m
@implementation appcontroller int myamount=0; @synthesize myslider; void setmyslider(nsslider *myslider){ [ns setintvalue:10]; //ok ns.intvalue =myamount;//ok } mycallbackfunction(double delta,std::vector<unsigned char>*mydata,void *userdata){ myamount=50; nslog(@"%i", myamount); // ok display value of myamount // should move slider value of amount calling following c function: changeslidervelocity(myslider);// error message myslider not declared in scope }
no.
in case, though mycallbackfunction()
placed between @implementation
, @end
not within class scope of appcontroller
. int myamount
static class-ish member (i have no idea scope is. global??) because defined in implementation file, not part of object appcontroller
.
no guarantees work, give shot. assumes there ever 1 (one) instance of appcontroller. read more on singletons in obj-c/c++.
@implementation appcontroller static appcontroller *sharedappinstance = nil; - (void) init { // ... whatever other code have if (sharedappinstance == nil) sharedappcontroller = self; //error message sharedappcontroller not declared in //this scope. replaced line sharedappcontroller = self; by: sharedappinstance= self; } mycallbackfunction(double delta,std::vector<unsigned char>*mydata,void *userdata){ changeslidervelocity([[appcontroller sharedappinstance] myslider]); // replace line make work: changeslidervelocity([sharedappinstance myslider]);//ok work. } @end
Comments
Post a Comment