C++ 类内函数成员的参数为本类指针有关问题

C++ 类内函数成员的参数为本类指针问题
例如:
class CA
{
public:
   CA();
   ~CA();
public:
    fun(CA * pc);    //像这样的函数 参数为本类指针的 用的时候有没有特别需要注意的地方??? 
}


------最佳解决方案--------------------
#include <iostream>

using namespace std;

class A
{
public:
void func()
{
cout<<"Happy Ending!"<<endl;
}
};

template <class RETURN,class CLASS>
union ChangeFunc
{
RETURN ( CLASS::*pMemFunc)();
RETURN (*pGlobFunc)(void *);
};

int main()
{
ChangeFunc<void,A> test;
A object;

test.pMemFunc=&A::func;
(*test.pGlobFunc)(&object);

return 0;
}


代码,自己看一下。
------其他解决方案--------------------
fun(CA * pc);

先要 if (pc != NULL)
或 assert(pc)

或fun(const CA& c)
或fun(CA& c)

------其他解决方案--------------------
因为类成员函数和非类成员函数调用约定不同,_thiscall与_stdcall的区别.

方法:

1,函数是全局的,声明为类的友元来访问类成员。
2,函数是类的static方法.
------其他解决方案--------------------
引用:
引用:
忒丑了!

泥也太没欣赏水平了~~~


---------------------

谢谢大家了 我还有个问题  
控制台程序 用SetTimer函数的时候 需要自己接收消息 参数4为函数地址 
格式是回调函数 我怎么才能把回调函数写在类内呢????

例如:
……

回调函数是有一定格式的.如果放在类里面,把他弄成static函数.因为普通类函数前面都有this指针这个隐藏参数.
------其他解决方案--------------------
直接用Union转化成员函数为普通函数也可以,没尝试,方法给你:
 union {                                // 联合类,用于转换类成员方法指针到普通函数指针(试过编译器不允许在这两种函数之间强制转换),不知道有没有更好的方法。
        void (_USERENTRY *ThreadProc)(void *);
        void (_USERENTRY TMyClass::*MemberProc)();
    } Proc;                                // 尽管联合里的两种函数类型现在看起来有很大不


网址:http://www.cppblog.com/richardhe/articles/56822.html
------其他解决方案--------------------
引用:
直接用Union转化成员函数为普通函数也可以,没尝试,方法给你:
C/C++ code
 union {                                // 联合类,用于转换类成员方法指针到普通函数指针(试过编译器不允许在这两种函数之间强制转换),不知道有没有更好的方法。
        void (_USERENTRY *ThreadProc)(void *);
     ……

这个可以但是不通用。
可以这样:
template<typename DST,typename SRC>
DST getType(SRC src)
{
     union
     {
        DST dst;