【发布时间】:2022-03-08 05:21:27
【问题描述】:
我试过这段代码:
auto p = new int (*)[10];
但我收到错误消息:
test.cc:8:21: error: expected expression
auto p = new int (*)[10];
^
1 error generated.
我更改了我的代码:
typedef int array[10];
auto p = new array *;
然后一切顺利。 这是为什么呢?
【问题讨论】:
-
或许,你试过
auto p = new (int (*)[10]);吗? -
如果这真的是您收到的唯一错误消息,那有点糟糕,因为它对您识别问题没有多大帮助。那到底是什么工具链?
-
@WhozCraig GCC 和 Clang 都给出了类似的错误消息。 MSVC 更糟糕,只是说
syntax error: ')'。但是错误是完全正确的(但可能不太容易理解),一元*运算符后面应该有一个表达式。 -
在现代 C++ 中显式使用
new是一种不好的做法。在这种情况下,您应该使用std::vector<int>或std::array<int, 10>。
标签: c++ multidimensional-array new-operator