这为什么是一个错误:
此外,为什么这不是一个错误:
为什么编译器认为
换句话说:为什么对于一般类型 T,
请注意,这是一个简化的示例,因此例如
还要注意,我知道通常比 C 风格数组更喜欢使用
typedef int H[4];
H * h = new H; // error: cannot convert 'int*' to 'int (*)[4]' in initialization
此外,为什么这不是一个错误:
?
此外,为什么这不是一个错误:?
H * h = new H[1];
为什么编译器认为
new H
返回一个 int *
,而 new H[1]
返回一个预期的 H *
?换句话说:为什么对于一般类型 T,
T * t = new T;
是正确的,但当 T
是数组类型时却不正确?
对于这种简单的数组类型,通过 new
分配内存的规范方式是什么?请注意,这是一个简化的示例,因此例如
new int[4]
不是可接受的解决方法 - 我需要使用前面的 typedef
中的实际类型。还要注意,我知道通常比 C 风格数组更喜欢使用
std::vector
、std::array
等,但我有一个需要使用上述类型的“现实世界”用例。
typedef int* H[4];
- Rahul TripathiH
成为一个指向int
的指针数组,对吗? - Paul R