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本身就是指针了,直接转化就是了:

C/C++ code

cout<<*((int*)a)<<endl;