我正在制作国际象棋程序,并希望制作一个能够检查作品可以移动的方向的功能。
例如,如果该棋子是女王,则该功能将检查女王在撞到棋盘边缘或跑进另一个棋子之前可以向每个方向移动多远。我想要返回一些具有每个方向数值的东西,北方,东北,南方等 像这样的东西
返回[1,2,3,4,5,6,1,2]
我可以将类似的各种数字返回到数组吗?
答案 0 :(得分:3)
你不能从一个函数返回一个数组 - 但是你可以返回一个向量,在任何情况下你应该使用它而不是数组。
答案 1 :(得分:0)
你可以返回一个结构,你可以返回一个指向数组的指针(如果你使用malloc在堆上声明它)......
答案 2 :(得分:0)
您可以通过引用传递aditional参数来返回C ++函数中的多个值,您可以将其用作返回值。
另一个替代方案,效率较低但可能更“漂亮”并且经常在Java中使用,它是创建一个数据结构来保存您需要返回的参数,并返回一个具有这些值的对象。
答案 3 :(得分:0)
使用键是方向的地图,值是每个方向允许的数字怎么样?您可以创建一个简单的枚举来表示各个方向:
std::map<Direction, unsigned int>
因此,在您的示例中,地图中的数据将如下所示:
NORTH -> 1
NORTHEAST -> 2
EAST -> 3
等
答案 4 :(得分:0)
返回一个元组向量,每个元组包含两个整数:分别可以在x和y方向上移动的方块数。
这样做可以让你代表骑士的动作,铸造等等。
答案 5 :(得分:0)
是的,但更好的解决方案是返回class AllowedMoves
。此类的数据成员将是私有的,测试函数(例如bool canMoveTo(int row, int col) const;
)将是公共的。如果您以后发现您需要其他内部数据格式,则可以在课堂内修复它,而无需在任何地方进行更改。