请教,如何用typedef转化一个二维数组的指针,来申明二维数组的指针型别的变量?

mimi_eleven 2004-08-26 01:07:45
我在程序中定义了一个指向二维数组的指针,二维数组的元素是Block*型别.
Block* (*blockArray)[10];
然后,我想把blockArray指针做实参传入方法void initializeBlock(XXXX blockArray);
(先假设XXXX为一个指向二维数组的指针型别)
但是我不晓得怎么申明这个参数,于是,我想用typedef来转化下.
写成:
typedef Block *(*BLOCKARRAY)[10];
再申明该方法为:
void initializeBlock(BLOCKARRAY blockArray);
...全文
145 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
studyingpersons 2004-08-26
  • 打赏
  • 举报
回复
期待中...
mimi_eleven 2004-08-26
  • 打赏
  • 举报
回复
to : pacman2000(pacman)(影子传说)
我也认为自己没有错,可是我使用的是VC6编译器, 而它在编译的时候报错:
error C2061: syntax error : identifier 'BLOCKARRAY'
error C2511: 'initializeBlock' : overloaded member function 'void (class Block *(*)[10])' not found in 'Console'

第一个就是句法错误,标识符"BLOCKARRAY"有误? 我实在是想不通.

希望大家能给我更好的做法.
pacman2000 2004-08-26
  • 打赏
  • 举报
回复
typedef Block *(*BLOCKARRAY)[10];
这个typedef好像没什么问题啊。
mimi_eleven 2004-08-26
  • 打赏
  • 举报
回复
to :hcj2002(流浪者)
---> typedef Block* BLOCKARRAY;
应该只是说明BLOCKARRAY是一个可以定义Block*型别的类型.但是该型别的指针跟一个指向指向二维数组的指针的型别是不同的. 你同意我的看法吗?

所以, 我在传一个不同型别的实参到先前定义的方法中时,编译器会找不到我重载实参型别的方法而报错,而实际上, 是我不知道如何去定义一个跟实参型别相同的形参,而造成的错误.
hcj2002 2004-08-26
  • 打赏
  • 举报
回复
typedef Block* BLOCKARRAY;
mimi_eleven 2004-08-26
  • 打赏
  • 举报
回复
to bluejugar(小艳)
这样的做法还是不行.
编译器(VC6)报错:
error C2061: syntax error : identifier 'BLOCKARRAY'
error C2511: 'initializeBlock' : overloaded member function 'void (class Block ** )' not found in 'Console'

而我自己的做法报错信息为:
error C2061: syntax error : identifier 'BLOCKARRAY'
error C2511: 'initializeBlock' : overloaded member function 'void (class Block *(*)[10])' not found in 'Console'

虽然blockArray的地址都是一样的,可是地址实际上代表的数据类型不同.所以在C++中是不能赋值的,(C++是强类型检测语言)
mimi_eleven 2004-08-26
  • 打赏
  • 举报
回复
我知道我错在哪里了.
写成:
typedef Block *(*BLOCKARRAY)[10]; 这样确实没有错. typedef的定义是正确的.
再申明该方法为:
void initializeBlock(BLOCKARRAY blockArray);
也是正确的.
只是我把typedef Block *(*BLOCKARRAY)[10];写在了.cpp文件中, 所以在方法申明(在.h)的时候找不到BLOCKARRAY 类型的.

谢谢大家帮忙了.
bluejugar 2004-08-26
  • 打赏
  • 举报
回复
typedef Block** BLOCKARRAY;
void initializeBlock(BLOCKARRAY blockArray);

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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