C++ 类内函数成员的参数为本类指针有关问题
C++ 类内函数成员的参数为本类指针问题
例如:
class CA
{
public:
CA();
~CA();
public:
fun(CA * pc); //像这样的函数 参数为本类指针的 用的时候有没有特别需要注意的地方???
}
------最佳解决方案--------------------
代码,自己看一下。
------其他解决方案--------------------
fun(CA * pc);
先要 if (pc != NULL)
或 assert(pc)
或fun(const CA& c)
或fun(CA& c)
------其他解决方案--------------------
因为类成员函数和非类成员函数调用约定不同,_thiscall与_stdcall的区别.
方法:
1,函数是全局的,声明为类的友元来访问类成员。
2,函数是类的static方法.
------其他解决方案--------------------
回调函数是有一定格式的.如果放在类里面,把他弄成static函数.因为普通类函数前面都有this指针这个隐藏参数.
------其他解决方案--------------------
直接用Union转化成员函数为普通函数也可以,没尝试,方法给你:
网址:http://www.cppblog.com/richardhe/articles/56822.html
------其他解决方案--------------------
这个可以但是不通用。
可以这样:
例如:
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方法.
------其他解决方案--------------------
回调函数是有一定格式的.如果放在类里面,把他弄成static函数.因为普通类函数前面都有this指针这个隐藏参数.
------其他解决方案--------------------
直接用Union转化成员函数为普通函数也可以,没尝试,方法给你:
union { // 联合类,用于转换类成员方法指针到普通函数指针(试过编译器不允许在这两种函数之间强制转换),不知道有没有更好的方法。
void (_USERENTRY *ThreadProc)(void *);
void (_USERENTRY TMyClass::*MemberProc)();
} Proc; // 尽管联合里的两种函数类型现在看起来有很大不
网址:http://www.cppblog.com/richardhe/articles/56822.html
------其他解决方案--------------------
这个可以但是不通用。
可以这样:
template<typename DST,typename SRC>
DST getType(SRC src)
{
union
{
DST dst;