今天在MFC的文件中看到这样的一段代码:
template<>
class CVarTypeInfo< CY >
{
public:
static const VARTYPE VT = VT_CY;
static CY VARIANT::* const pmField;
};__declspec( selectany ) CY VARIANT::* const CVarTypeInfo< CY >::pmField = &VARIANT::cyVal;请问CY VARIANT::* 怎么解释?? 是表示VARIANT里的CY类型呢 还是 表示首先是VARIANT型的指针再是CY类型的????? 如果是VARIANT里的CY类型那为什么不写成VARIANT::CY *????? 请高手指点。
template<>
class CVarTypeInfo< CY >
{
public:
static const VARTYPE VT = VT_CY;
static CY VARIANT::* const pmField;
};__declspec( selectany ) CY VARIANT::* const CVarTypeInfo< CY >::pmField = &VARIANT::cyVal;请问CY VARIANT::* 怎么解释?? 是表示VARIANT里的CY类型呢 还是 表示首先是VARIANT型的指针再是CY类型的????? 如果是VARIANT里的CY类型那为什么不写成VARIANT::CY *????? 请高手指点。
解决方案 »
- 为什么我调用的这个函数没起作用?能不能告诉我造成这种结果可能有哪些原因?好让我有个方向调试!郁闷啊!
- 如何判断鼠标点击在图片控件的位置啊?
- CWinApp::InitInstance()中调用的AfxEnableControlContainer(),相当于什么win api?
- 奉上100分,请各位大虾赐教!!!如何通过IHTMLDocument2 查询到某个IHTMLElement,并激发这个OnClick消息
- 急求VC技术内幕第四版下载可用地址
- 关于传递消息的问题,我拆分窗口,左边视图弹出菜单,可以操作右边的视图,我想在弹出的菜单处理代码中传递消息给右边视图,然后右边视图
- 我现在有几个类,把它封装成静态Lib调用程序执行没有问题,封装成DLL运行就出错,请高手回答!
- 关于menu的显示问题
- 正在做一个人机对奕的中国象棋,准备为有兴趣参与者提供全部源码
- IE中不能正常加载ocx的问题。
- 再问关于进度条问题
- eVC下怎么错误就出来了??
哈哈,开个玩笑。这是指向成员的指针。
比如struct A
{
...
int IntMem;
...
};那么“指向A的整数成员的指针”就可以写成
int A::* pIntMem;
赋值的话可以:
pIntMem = &A::IntMem; // pIntMem是对应类的
假如你定义了A的变量a和A的指针p,那么:
a.*pIntMem;
p->*pIntMem;
就可以取得变量值。和直接写int *不同的是,你可以用不同的A的变量来取值,而int *必须在有了A的变量后才能用:
int * pInt;
A a;
pInt = &a.IntMem; // pInt是对应类的某个实例的这种写法还可以用在class中,用法相同。
最有用的可以用在类的成员函数上(虚函数或非虚函数都可以)。比如:
class B
{
public:
int Func(int); // 虚函数也可以。
};int (B::* pMemFunc)(int);
pMemFunc = B::Func;B * pB = new B;
int r = pB->* pMemFunc(10);