void*类型成员转化有关问题,如何输出10呀
void*类型成员转化问题,怎么输出10呀?
#include <iostream>
using namespace std;
class A{
public:
A():a(NULL){cout<<"~~~"<<endl;}
A(void* b):a(b){ cout<<"a"<<endl;}
void abc(void* cc,int* xx,int* yy,int*ss)
{
//通过俩指针,把变量xx的值赋值给void* a成员
yy = xx;//yy获取变量地址xx
cc = (void*)yy;//yy地址强转void*类型地址,并赋给cc
a=cc;//同一类型cc地址赋给a a获取变量xx地址
cout<<"----------------"<<endl;
ss=(int*)a; //a强转int*类型地址 赋给ss
cout<<*ss<<endl; //ss得到变量xx的地址,转化到这是成功的
cout<<"------------"<<endl;
// cout<<*((int*)&a)<<endl;//error
}
ostream& operator>> (ostream& os)
{
return os<<*((int*)&a);
}
private:
void* a;
};
int main()
{
A aa;
int x=10;
int s;
int* y = NULL;
void* p =NULL;
aa.abc(p,&x,y,&s);
aa>>cout<<endl;
}
------解决方案--------------------
cout<<*((int*)&a)<<endl;//error
为什么要取地址?你a本身就是指针了,直接转化就是了:
#include <iostream>
using namespace std;
class A{
public:
A():a(NULL){cout<<"~~~"<<endl;}
A(void* b):a(b){ cout<<"a"<<endl;}
void abc(void* cc,int* xx,int* yy,int*ss)
{
//通过俩指针,把变量xx的值赋值给void* a成员
yy = xx;//yy获取变量地址xx
cc = (void*)yy;//yy地址强转void*类型地址,并赋给cc
a=cc;//同一类型cc地址赋给a a获取变量xx地址
cout<<"----------------"<<endl;
ss=(int*)a; //a强转int*类型地址 赋给ss
cout<<*ss<<endl; //ss得到变量xx的地址,转化到这是成功的
cout<<"------------"<<endl;
// cout<<*((int*)&a)<<endl;//error
}
ostream& operator>> (ostream& os)
{
return os<<*((int*)&a);
}
private:
void* a;
};
int main()
{
A aa;
int x=10;
int s;
int* y = NULL;
void* p =NULL;
aa.abc(p,&x,y,&s);
aa>>cout<<endl;
}
------解决方案--------------------
cout<<*((int*)&a)<<endl;//error
为什么要取地址?你a本身就是指针了,直接转化就是了:
- C/C++ code
cout<<*((int*)a)<<endl;