gpt4 book ai didi

c++ - c++ 中的 int (*) [ someValue] 是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:06:57 25 4
gpt4 key购买 nike

我只是在大学里学习 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'

最佳答案

简而言之

您的问题标题的答案是:int(*)[someConstant] 对应于一个类型,该类型是指向每个 someConstant 项的表的指针int 类型。

所有细节

在 C++ 中,有效语句以半列结尾,因此语句中缺少一部分。此外,评论显示这只是 Actor 阵容。

原文project file在 GitHub 上,完整的声明是:

Table = (int (*)[Cube::Move::NumberOfClockwiseQuarterTurnMoves]) // the cast
(new int[TableSize*Cube::Move::NumberOfClockwiseQuarterTurnMoves]); // the allocation

此转换意味着表达式将返回的指针将作为指向 NumberOfClockwiseQuarterTurnMoves 整数表的指针处理,即使实际上返回的是指向更大表的指针new 表达式。

像您所做的那样删除 int 之前的括号会使该语句无效,因为 int (*)[Cube::Move::NumberOfClockwiseQuarterTurnMoves] 是类型,并且不允许在没有正确转换运算符的情况下在表达式中使用这样的类型。因此,编译器告诉您它需要一个真实的表达式(它将提供一个真实的值)。

P.S.:这确实与引用函数的 int (*)() 相关的问题无关指向返回 int 的函数的指针

关于c++ - c++ 中的 int (*) [ someValue] 是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48359613/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com