我只是在大学里学习c ++。 我试图从GitHub编译代码来解决Rubiks立方体。我在以下代码行中收到错误:
Table = int (*)[Cube::Move::NumberOfClockwiseQuarterTurnMoves] // the cast
错误消息是:
MoveTable.cpp [Error] expected primary-expression before 'int'
我使用dev-c ++ IDE进行编译,我不熟悉int(*)[]
。
请有人告诉我它是什么,我该如何纠正?
我做了一些研究,发现this。和我的问题一样吗?看起来有点不同。我并不是要求int *(int*)=constant
提问here.
编辑:我忘了在
之前加上完整的陈述Table = (int (*)[Cube::NumberOfClockwiseQuarterTurnMoves] )// the cast
(new int[TableSize*Cube::NumberOfClockwiseQuarterTurnMoves]);
我收到了这些错误。
[Error] expected primary-expression before 'int'
[Error] expected ')' before 'int'
答案 0 :(得分:1)
简而言之
问题标题的答案是:int(*)[someConstant]
对应于指向someConstant
项目表的指针的类型,每个项目都为int
类型。
所有细节
在C ++中,有效语句以半列结尾,因此语句中缺少一部分。此外,评论显示这只是演员的一部分。
在GitHub上的原始project file中,完整的陈述是:
Table = (int (*)[Cube::Move::NumberOfClockwiseQuarterTurnMoves]) // the cast
(new int[TableSize*Cube::Move::NumberOfClockwiseQuarterTurnMoves]); // the allocation
此强制转换表示将由表达式返回的指针作为指向NumberOfClockwiseQuarterTurnMoves
整数表的指针进行处理,即使实际上{{1}返回了指向较大表的指针。 1}}表达。
在new
之前删除括号之前,因为int
是一个无效的语句,因为int (*)[Cube::Move::NumberOfClockwiseQuarterTurnMoves]
是一种类型,并且它不允许使用这样的类型没有正确的转换运算符的表达式。因此,编译器会告诉您它需要一个真实的表达式(它将提供一个实际值)。
PS :这实际上与int (*)()
相关的问题没有关系,这些问题引用函数返回一个int的函数指针