zrahimic
پنج شنبه 29 بهمن 1388, 10:10 صبح
با سلام.
من در یک کلاس native یک اشاره گر به تابع تعریف کردم. به صورت زیر:
class myNativeClass
{
public:
typedef void (myFunctionPointer)(int nData);
void SetFunc(myFunctionPointer *pfnMyFunc);
private:
static myFunctionPointer *spfnMyFunc;
};
void (*myNativeClass::spfnMyFunc)(int nData) = NULL;
void myNativeClass::SetFunc(myFunctionPointer *pfnMyFunc)
{
spfnMyFunc = pfnMyFunc;
}
حالا میخوام از طریق تابع SetFunc در یک کلاس Managed به این اشاره گر مقدار بدم. به صورت زیر:
public ref class myManagedClass
{
private:
myNativeClass * m_Impl;
void myNewFunction(int nData);
};
myManagedClass ::myManagedClass ():
{
m_Impl -> SetFunc(myNewFunction);
}
void myManagedClass ::myNewFunction(int nData)
{
// other code
}
ولی موقع کامپایل خطا میده.
اگر بیام typedef رو از کلاس اول بیارم بیرون و عمومی کنم و تابع myNewFunction رو هم از کلاس دوم بیارم بیرون و عمومی کنم، دیگه خطا نمیده و منظور من رو تامین نمیکنه. چون من میخوام تابع مربوط به اشیایی باشه که از کلاس دوم ساخته میشه نه عمومی باشه.
لطفا راهنمایی کنید.
من در یک کلاس native یک اشاره گر به تابع تعریف کردم. به صورت زیر:
class myNativeClass
{
public:
typedef void (myFunctionPointer)(int nData);
void SetFunc(myFunctionPointer *pfnMyFunc);
private:
static myFunctionPointer *spfnMyFunc;
};
void (*myNativeClass::spfnMyFunc)(int nData) = NULL;
void myNativeClass::SetFunc(myFunctionPointer *pfnMyFunc)
{
spfnMyFunc = pfnMyFunc;
}
حالا میخوام از طریق تابع SetFunc در یک کلاس Managed به این اشاره گر مقدار بدم. به صورت زیر:
public ref class myManagedClass
{
private:
myNativeClass * m_Impl;
void myNewFunction(int nData);
};
myManagedClass ::myManagedClass ():
{
m_Impl -> SetFunc(myNewFunction);
}
void myManagedClass ::myNewFunction(int nData)
{
// other code
}
ولی موقع کامپایل خطا میده.
اگر بیام typedef رو از کلاس اول بیارم بیرون و عمومی کنم و تابع myNewFunction رو هم از کلاس دوم بیارم بیرون و عمومی کنم، دیگه خطا نمیده و منظور من رو تامین نمیکنه. چون من میخوام تابع مربوط به اشیایی باشه که از کلاس دوم ساخته میشه نه عمومی باشه.
لطفا راهنمایی کنید.