这段代码出现了错误
不允许不完整类型
初始化值过多
string *ReturnTwoStringsInArray()
{
return new string[]{"return1", "return2"};
}
这个可以工作:
string *ReturnTwoStringsInArray()
{
return new string[2]{"return1", "return2"};
}
这一个也是如此:
string arr[]{"return1","return"};
如果编译器可以从初始化列表中确定所需的大小,那么我们是否应该能够在
[]
中不带参数调用new
呢?
new
表达式,边界应该被推导出来,就像这个例子:double* p = new double[]{1,2,3};
来自cppreference。看起来像是编译器的错误。它似乎在clang中工作正常,但在gcc或msvc中不行:https://godbolt.org/z/CQG-vq - Ted Lyngmostd::array<std::string,2>
? - drescherjm