这有什么不妥:
我收到了所有5个定义的错误:
error C3698: 'System::String ^' : cannot use this type as argument of 'gcnew'
error C2512: 'System::String::String' : no appropriate default constructor available
array<String^>^ arr = gcnew array<String^>
{
gcnew String^ "Madam I'm Adam.",
gcnew String^ "Don't cry for me,Marge and Tina.", //error C2143: syntax error : missing '}' before 'string' AND error C2143: syntax error : missing ';' before 'string'
gcnew String^ "Lid off a daffodil.",
gcnew String^ "Red lost Soldier.",
gcnew String^ "Cigar? Toss it in a can. It is so tragic."
}
答案 0 :(得分:5)
您不应在数组初始值设定项中使用gcnew
:
array<String^>^ arr = gcnew array<String^> {
"Madam I'm Adam.",
"Don't cry for me,Marge and Tina.",
"Lid off a daffodil.",
"Red lost Soldier.",
"Cigar? Toss it in a can. It is so tragic."
};
答案 1 :(得分:3)
另一个应答者具有正确的语法,但这不是因为你在数组初始化器中。
字符串初始化有两个错误。
^
。你是
构造一个新对象,而不是一个新的引用。 因此,正确的构造函数语法是调用gcnew String("Madam I'm Adam.")
。
然而,正如其他回答者所指出的那样,你不需要这样做。字符串文字已经是一个String对象,因此您可以删除对构造函数的调用,并直接使用字符串文字。这与在C#中调用new String("Madam I'm Adam.")
相同:它已经是一个字符串对象,调用new String
是多余的。