我有这种类型:
typedef short DCTELEM;
typedef DCTELEM DCTBLOCK[64];
最后一个类型的数组和指向malloc的短裤数组的指针:
DCTBLOCK MQUAD;
short * ptrArray;
我需要MQUAD下注到ptrArray指向的特定位置;
在C中我会多写一些像
这样的东西MQUAD = ptrArray + 3 * 2;
并在指向所需位置之后有MQUAD,但我得到了
错误C2440:'=':无法从'short *'转换为'DCTBLOCK'
在c ++中,因为我知道数组类型和指向某种类型的指针存在差异。
答案 0 :(得分:1)
你的MQUAD
变量是一个数组,而不是一个指针,因此你无法分配它(感谢Remy Lebeau的评论)。如果您将其声明为:
DCTELEM *MQUAD;
然后你可以分配给它:
MQUAD = reinterpret_cast<DCTELEM *>(ptrArray + 3 * 2);
这是使用C ++强制转换语法。如果您愿意,也可以使用C cast语法。
答案 1 :(得分:0)
主要错误是
DCTBLOCK MQUAD // it's wrong
DCTELEM* MQUAD // it's right
你可以按照自己的意愿投出
MQUAD = ptrArray + 3 * 2;