我的书中的代码有问题:
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
的数组。这与使用&RedGeneric
和SquareArray* pSquareArray = m_squareInfo[m_iDirection];
进行的初始化是一致的。关于c++ - 错误使用typedef的typedef(?),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28416976/