c++之使用 new[] 关键字时不允许不完整的类型

cyq1162 阅读:27 2025-02-15 21:57:57 评论:0

此代码给出错误

incomplete type is not allowed

too many initializer values



string *ReturnTwoStringsInArray() 
{ 
   return new string[]{"return1", "return2"}; 
} 

这个有效:

string *ReturnTwoStringsInArray() 
{ 
   return new string[2]{"return1", "return2"}; 
} 

这个也是如此:

string arr[]{"return1","return"}; 

难道我们不能打电话 new[] 中没有参数编译器是否可以从初始化列表中确定所需的大小?

请您参考如下方法:

C++ compiler support我们可以看到缺陷报告P1009R2 :Array size deduction in new-expressions尚未被所有编译器供应商采用。
P1009R2说:“措辞更改的效果应该适用于它们适用的所有先前版本的 C++ 的实现。”
clang++从 C++11 模式及更高版本的版本 9 开始支持它。


标签:C++
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号