do_do,小刘飞刀,myan帮我看看

GuanXP 2002-01-17 05:54:34
class CA
{
void FuncA(int);
void FuncB(int);

void Func(void (CA::*p)(int)); //1
void FuncW(void CA::*p(int)); //2
//void FuncW(void CA::*(*p)(int)); //3
};
在上面的类中
我将 1 误写成 2
语句 2 在VC6中编译不能通过,在BCB5中可通过.
应该BCB5是正确的,它将 2 解释成和 3 等价,

问题是 2 这句话的具体意思是什麽?
...全文
209 11 打赏 收藏 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Last_Dodo 2002-01-23
  • 打赏
  • 举报
回复
语法没错。
句法应该是错的。但因你无法使用它(FuncW),所以没大问题。或使用是你会把它改成你要的。
语法是你不能改的,换句话说是电脑所要求的。句法实际上往往是你要求的东西。
GuanXP 2002-01-21
  • 打赏
  • 举报
回复
所以这应该算是BCB5编译器的错误了,对吗?
谢谢!
Last_Dodo 2002-01-19
  • 打赏
  • 举报
回复
对不起,来晚了。昨晚(我这是晚上,国内是白天),我没法连到公司(要改成用一次性秘码,但秘码卡未到)加上小孩吵得很,看了下问题但没答复。

void Func(void (CA::*p)(int)):参数是CA的成员函数指针(member method pointer)。此成员函数有一个整型参数没返回值。
void FuncW(void CA::*p(int)):参数是函数指针,此函数有一个整型参数返回void类型的CA成员指针(data member pointer).
void FuncW(void CA::*(*p)(int)):同上。
Kreutzer() 是对的,void CA::*p(int)没有语法错误但有句法错误。因为你不可能定义一个数据成员(data member)为void类型。但void *CA::*p(int)却是可以的。我想大家都熟悉成员函数指针和数据成员指针。
Kreutzer 2002-01-18
  • 打赏
  • 举报
回复
cannot declare pointer to 'void' member!!

void FuncW(void CA::*p(int));
估计和
void FuncW(void CA::*p);
等价
而void CA::*p就是
cannot declare pointer to 'void' member
GuanXP 2002-01-18
  • 打赏
  • 举报
回复
int CA::* Func(int)
{
return &CA::a;//打错了
}
各位继续!
GuanXP 2002-01-18
  • 打赏
  • 举报
回复
如果是将void 换成int
我知道是如下意义:
p是一个函数指针,它的返回值是
int CA::* 即CA的成员指针,参数是int
//----------------------------------
class CA
{
public:
int a;
void FuncW(void CA::*(*p)(int));
};
CA A;
int CA::* Func(int)
{
return &A::a;
}
A.FuncW(Func);
//--------------------------------
可是void CA::* 呢?什麽意思,想不明白!

cber 2002-01-18
  • 打赏
  • 举报
回复
我的测试是,将void换成int,VC6,BCC55和gcc 2.91.57都可以通过编译及运行
但如果只是void的话,只有bcc55可以编译运行
具体2和3的意义,我还在思考中
hedong 2002-01-18
  • 打赏
  • 举报
回复
关注中
GuanXP 2002-01-18
  • 打赏
  • 举报
回复
具体点
GuanXP 2002-01-18
  • 打赏
  • 举报
回复
//----------------------------------
class CA
{
public:
int a;
void FuncW(int CA::*(*p)(int));//都是copy惹的祸
};
CA A;
int CA::* Func(int)
{
return &CA::a;
}
A.FuncW(Func);
//--------------------------------
//****************************************
另外,后面发言的各位请先看看前面的贴子
再决定说什麽,不要浪费空间!!!!
//****************************************
to Kreutzer() 
我前面已经说过2和3等价,并不与void FuncW(void CA::*p)
等价,这是BCB编译器说的!!
helloeveryone 2002-01-17
  • 打赏
  • 举报
回复
是否支持都没多大影响吧?只不过是嵌套调用。
源码链接: https://pan.quark.cn/s/a4b39357ea24 微信小程序是由腾讯公司设计的一种轻量级应用开发平台,主要面向移动设备,旨在为用户带来无需下载安装即可直接使用的应用服务体验。在微信小程序的开发实践中,"模仿美团菜单 swiper分类菜单"是一项常见的技术应用,其目的是达成与美团外卖应用相似的交互模式,使用户能够轻松地浏览和挑选各种商品或服务。 在微信小程序的技术体系中,`swiper`组件属于轮播图功能模块,通常用于呈现多张图片或卡片式的切换界面,能够达成动态滑动展示不同分类菜单的功能。在模拟美团菜单的应用情境下,`swiper`组件一般与`swiper-item`组件协同工作,每一个`swiper-item`对应一个分类,用户可通过左右滑动来切换不同的分类菜单。 为了达成这样的功能,首先需要在微信小程序的`json`配置文档中引入`swiper`组件,并在`wxml`结构文档中构建相应的布局代码,将每个分类以`swiper-item`的形式进行组织。同时,需要在`wxss`样式文档中定义恰当的样式,保证分类菜单的视觉呈现符合设计规范。 接下来,我们将在`js`逻辑文档中处理`swiper`的切换逻辑,通过监听`bindchange`事件来识别当前选中的分类,并根据这一信息动态获取对应的子菜单信息。为了达成类似美团的层级菜单功能,可能还需要借助`picker`或`navigator`组件来展示二级分类或商品详情。 在开发阶段,需要关注以下关键点: 1. 数据绑定:保证数据与界面之间的双向链接准确无误,以便在选择分类时即时更新显示内容。 2. 动态加载:针对大量数据,可能需要采取异步加载机制,防止一次性加载过多内容引发性能瓶颈...
代码下载地址: https://pan.quark.cn/s/72bd50ecb2fb 《微信飞机大战素材详解》 微信飞机大战作为一款广受欢迎的休闲游戏,凭借其便捷的操作方式和紧张刺激的游戏过程,赢得了众多用户的青睐。本文将系统性地剖析这款游戏的关键素材,旨在帮助开发者全面掌握游戏的设计理念与实现方法。 我们聚焦于游戏的核心构成——"AirplaneResource"。此名称一般指向游戏资源库,其中收纳了游戏中所有的视觉素材、音频资料以及动画元素。在微信飞机大战的语境下,这些资源构成了游戏画面呈现、音效播放和动态效果的基础。 1. **图像素材**:游戏中的飞机造型、敌方单位、弹药以及爆炸效果等视觉元素,均以图像素材的形式进行展示。图像素材通常涵盖PNG或JPG格式的静态图片,也包括GIF或APNG格式的动态图片。开发者需要细致地设计并优化这些图像,确保在各种设备上都能实现流畅的渲染,同时维持视觉表现力。 2. **声音素材**:游戏的背景音乐、射击音效、爆炸声等音频片段,对于构建游戏氛围具有决定性作用。这些音频文件可能以MP3、WAV或OGG格式进行存储,开发者需要权衡音频的压缩程度与音质,以确保在不牺牲游戏体验的前提下,有效控制文件体积。 3. **动画序列**:飞机的飞行轨迹、攻击动作、爆炸过程等动态表现,通常借助序列帧动画技术实现。这些序列帧图片组合而成的动画,通过编程控制播放速率和顺序,为游戏增添生动的动态效果。 4. **物理接触判定**:游戏中飞机与弹药之间的接触判定,是通过算法完成的。开发者可能会采用基础的矩形接触判定或更精密的像素级接触判定,以保证游戏的公平性和挑战性。 5. **游戏规则**:微信飞机大战的得分机制、生命值系统、敌机生成逻辑等...

70,040

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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