我的书中的代码有问题:

const int SQUARE_ARRAY_SIZE = 4;
const int SQUARE_INFO_SIZE = 4;
typedef Square SquareArray[SQUARE_ARRAY_SIZE];
typedef SquareArray SquareInfo[SQUARE_INFO_SIZE];

SquareArray RedGeneric = { Square(0, 0), Square(0, 1),
Square(1, 1), Square(1, 0) };
SquareInfo RedInfo = { &RedGeneric, &RedGeneric,  \\problem here
&RedGeneric, &RedGeneric };


大喊:


  错误C2440:“正在初始化”:无法从“ SquareArray(*)”转换为“ Square”
  
  IntelliSense:不存在合适的构造函数来从“ SquareArray *”转换为“ Square”


据我了解,SquareInfo代表SquareArray的数组,但似乎vs2013希望将其分解为Squares,结果

SquareInfo m_squareInfo; ...
SquareArray* pSquareArray = m_squareInfo[m_iDirection];


大喊:


  IntelliSense:类型“ const Square *”的值不能用于初始化“ SquareArray *”类型的实体


这本书是2008年的书,我不知道那本书是不是当时还可以,还是从一开始就有错误。至于q,请告诉我真正的问题是什么以及如何使其工作。

最佳答案

我很确定这本书打算写

typedef SquareArray* SquareInfo[SQUARE_INFO_SIZE];
//                 ^


SquareInfo是指向SquareArray的指针的数组,而不是SquareArray的数组。这与使用&RedGenericSquareArray* pSquareArray = m_squareInfo[m_iDirection];进行的初始化是一致的。

关于c++ - 错误使用typedef的typedef(?),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28416976/

10-12 14:55