C ++类型转换:错误C2440:'=':无法从'short *'转换为'DCTBLOCK'

时间:2010-06-22 01:07:40

标签: c++ type-conversion casting

我有这种类型:

typedef short DCTELEM;
typedef DCTELEM DCTBLOCK[64];

最后一个类型的数组和指向malloc的短裤数组的指针:

DCTBLOCK MQUAD;
short * ptrArray;

我需要MQUAD下注到ptrArray指向的特定位置;

在C中我会多写一些像

这样的东西
MQUAD = ptrArray + 3 * 2;

并在指向所需位置之后有MQUAD,但我得到了

  

错误C2440:'=':无法从'short *'转换为'DCTBLOCK'

在c ++中,因为我知道数组类型和指向某种类型的指针存在差异。

2 个答案:

答案 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;