我的书代码存在问题:
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,请告诉我什么是真正的错误以及如何使其发挥作用。
答案 0 :(得分:4)
我很确定这本书的意思是写
typedef SquareArray* SquareInfo[SQUARE_INFO_SIZE];
// ^
即,SquareInfo
是指向SquareArray
的指针数组,而不是SquareArray
的数组。这与使用&RedGeneric
和SquareArray* pSquareArray = m_squareInfo[m_iDirection];
的初始化一致。
答案 1 :(得分:1)
看起来你的书在该行上有拼写错误
typedef SquareArray SquareInfo[SQUARE_INFO_SIZE];
当我把它变成指针时
typedef SquareArray* SquareInfo[SQUARE_INFO_SIZE];
// ^