错误:“表达式必须具有类的类型”C++/CLI
问题描述:
不知道为什么这不会编译。我在这里做了什么样的错误,我该如何解决它?我试图编译我在一个例子中找到的代码,但是我的编译器必须比他们的编译器有更严格的设置,或者可能是不同版本的编译器。代码应该打开一个窗体并显示一些文本。错误:“表达式必须具有类的类型”C++/CLI
using namespace System;
using namespace System::Windows::Forms;
using namespace System::Drawing;
public ref class MyForm : Form
{
public:
MyForm()
{
Text = "Windows Forms Demo";
}
void Main()
{
Application.Run (gcnew MyForm());
}
protected:
void OnPaint (PaintEventArgs e)
{
e.Graphics.DrawString ("Hello, world", Font,
gcnew SolidBrush (Color.Black), ClientRectangle);
}
}
答
你写不正确的语法来override
和访问方法。
virtual void OnPaint(PaintEventArgs^ e) override
{
Form::OnPaint(e);
e->Graphics->DrawString("Hello, world", gcnew System::Drawing::Font("Arial",20), gcnew SolidBrush (Color::Black), ClientRectangle);
}
并且不使用void main()
。
[STAThreadAttribute]
int main()
{
Application::Run(gcnew Form1());
return 0;
}
答
错误与Font
,这是一个类。该调用需要一个字体,即一个Font
实例。
对不起,错误在线“e.Graphics.DrawString”e突出显示,它表示表达式必须有一个类的类型 – 2012-01-05 08:48:57
您的编译器应该给你一些行信息和详细的错误信息。尝试使用您的编译器启用所有警告。 – 2012-01-05 08:49:01