const String与方法调用中的String

时间:2017-01-14 15:56:08

标签: string visual-c++ c++-cli const

在尝试学习C ++ / CLI Microsoft Windows UI应用程序时,我对我遇到的错误感到困惑。

我已将MyForm的一个成员定义为

const String ^ SAMPLE_TEXT = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Praesent et nunc at erat commodo placerat.";

在方法中,

System::Void MyForm_Paint(System::Object^  sender, System::Windows::Forms::PaintEventArgs^  e)

编译器在函数

时给出错误

e->Graphics->DrawString(SAMPLE_TEXT, the_font, blackBrush, *rect);

调用

,错误是,

error C2664: 'void System::Drawing::Graphics::DrawString(System::String ^,System::Drawing::Font ^,System::Drawing::Brush ^,System::Drawing::RectangleF,System::Drawing::StringFormat ^)': cannot convert argument 1 from 'const System::String ^' to 'System::String ^'

我很惊讶DrawString不接受const String。也就是说,我希望 String内容是常量,而不是关心指针本身是可变的。据我了解,限定​​符const适用于其直接权利。

如果我在const的定义中忽略SAMPLE_TEXT,程序将编译并运行。另外,把它写成,

String ^ const SAMPLE_TEXT = "Lorem ipsum dolor...";

将编译并运行。但是,我理解这意味着文本的常量指针可以更改,而不是我想要的。

这一切都在Visual Studio 2015中完成。

我不能指定String程序无法更改的内容并且有功能使用它吗?

0 个答案:

没有答案