我有以下类型:

typedef short DCTELEM;
typedef DCTELEM DCTBLOCK[64];

最后一个类型的数组和一个指向malloc分配的短裤数组的指针:
DCTBLOCK MQUAD;
short * ptrArray;

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

在C语言中,我会写像
MQUAD = ptrArray + 3 * 2;

然后将MQUAD指向所需的位置,但是我得到了



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

最佳答案

您的MQUAD变量是一个数组,而不是一个指针,因此无法分配给它(感谢Remy Lebeau的评论)。如果您声明为:

DCTELEM *MQUAD;

然后您可以分配给它:
MQUAD = reinterpret_cast<DCTELEM *>(ptrArray + 3 * 2);

这是使用C++强制转换语法。您也可以使用C强制转换语法。

关于c++ - C++类型转换:错误C2440: '=':无法从 'short *'转换为 'DCTBLOCK',我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3089548/

10-10 11:40