对非静态成员“GGMM::a”的非法引用

97jy059 2004-08-19 10:51:06
#include <iostream>
using namespace std;

struct GGMM
{
int a;
char b;
};
int main()
{
typedef int (GGMM::*P);
GGMM GM;
GM.a=555;GM.b='x';
P ppp=&(GGMM::a);//Line 14
(GM.*ppp)=1234;
cout<<GM.a;
}

E:\TEMP>bcc32 a.cpp
Borland C++ 5.6.4 for Win32 Copyright (c) 1993, 2002 Borland
a.cpp:
Turbo Incremental Link 5.66 Copyright (c) 1997-2002 Borland

E:\TEMP>a
1234
E:\TEMP>cl /GX a.cpp
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.

a.cpp
a.cpp(14) : error C2597: 对非静态成员“GGMM::a”的非法引用

E:\TEMP>
...全文
520 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
hellwolf 2004-08-19
  • 打赏
  • 举报
回复
顶,楼上强
Jinhao 2004-08-19
  • 打赏
  • 举报
回复
括号的错
P ppp= &GGMM::a; //&GGMM::a 是个整体

当加入括号后 &(GGMM::a),被分割为两部分,其中的GGMM::a被解析成a是GGMM的static成员
hellwolf 2004-08-19
  • 打赏
  • 举报
回复
明显错了亚,编译器说了
FlyindanceDDr 2004-08-19
  • 打赏
  • 举报
回复
VC6下没问题...

24,853

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧