65,211
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
using namespace std;
class Small
{
public:
int b;
void* pMyBig;
public:
Small(int x,void* pBig):b(x),pMyBig(pBig){}
};
class Big
{
public:
int a;
Small MySmall;
public:
Big(int y,int z,void* pBig):a(y),MySmall(z,pBig){}
};
void main()
{
Big MyBig(1,2,NULL);
MyBig.MySmall.pMyBig = &MyBig;//错误1所在行
Big *p = (Big*)MyBig.MySmall.pMyBig;//
//cout <<MyBig.MySmall.pMyBig->a <<endl;//错误2所在行
cout<<p->a<<endl;
}
void main()
{
Big MyBig(1,2,NULL);
MyBig.MySmall.pMyBig = (void*)(&MyBig);//错误1所在行
cout <<((Big*)MyBig.MySmall.pMyBig)->a <<endl;//错误2所在行
}
class Small
{
public:
int b;
void* pMyBig;
public:
Small(int x,void* pBig):b(x),pMyBig(pBig){}
};
class Big
{
public:
int a;
Small MySmall;
public:
Big(int y,int z,void* pBig):a(y),MySmall(z,pBig){}
};
void main()
{
Big MyBig(1,2,NULL);
MyBig.MySmall.pMyBig = &MyBig;//错误1所在行 //左值别转了,右边会隐式子转换的
cout << ((Big*)MyBig.MySmall.pMyBig)->a <<endl;//错误2所在行 // 这里转换一下就可以了。
}