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


我在程序中定义了一个指向二维数组的指针,二维数组的元素是Block*型别.
Block* (*blockArray)[10];
然后,我想把blockArray指针做实参传入方法void initializeBlock(XXXX blockArray);
(先假设XXXX为一个指向二维数组的指针型别)
但是我不晓得怎么申明这个参数,于是,我想用typedef来转化下.
写成: 
typedef Block *(*BLOCKARRAY)[10];
再申明该方法为: 
void initializeBlock(BLOCKARRAY blockArray);

8 个解决方案

#1


typedef Block** BLOCKARRAY;
void initializeBlock(BLOCKARRAY blockArray);

#2


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++是强类型检测语言)

#3


typedef  Block*   BLOCKARRAY;

#4


to :hcj2002(流浪者)
---> typedef Block* BLOCKARRAY;
应该只是说明BLOCKARRAY是一个可以定义Block*型别的类型.但是该型别的指针跟一个指向指向二维数组的指针的型别是不同的. 你同意我的看法吗?

所以, 我在传一个不同型别的实参到先前定义的方法中时,编译器会找不到我重载实参型别的方法而报错,而实际上, 是我不知道如何去定义一个跟实参型别相同的形参,而造成的错误.

#5


typedef Block *(*BLOCKARRAY)[10];
这个typedef好像没什么问题啊。

#6


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"有误? 我实在是想不通.

希望大家能给我更好的做法.

#7


期待中...

#8


我知道我错在哪里了.
写成: 
typedef Block *(*BLOCKARRAY)[10]; 这样确实没有错. typedef的定义是正确的.
再申明该方法为: 
void initializeBlock(BLOCKARRAY blockArray);
也是正确的. 
只是我把typedef Block *(*BLOCKARRAY)[10];写在了.cpp文件中, 所以在方法申明(在.h)的时候找不到BLOCKARRAY 类型的.

谢谢大家帮忙了.

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
  © 2014-2022 ITdaan.com 联系我们: