2012-01-05 153 views
0

不知道爲什麼這不會編譯。我在這裏做了什麼樣的錯誤,我該如何解決它?我試圖編譯我在一個例子中找到的代碼,但是我的編譯器必須比他們的編譯器有更嚴格的設置,或者可能是不同版本的編譯器。代碼應該打開一個窗體並顯示一些文本。錯誤:「表達式必須具有類的類型」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); 
    } 
} 
+0

對不起,錯誤在線「e.Graphics.DrawString」e突出顯示,它表示表達式必須有一個類的類型 – 2012-01-05 08:48:57

+0

您的編譯器應該給你一些行信息和詳細的錯誤信息。嘗試使用您的編譯器啓用所有警告。 – 2012-01-05 08:49:01

回答

0

你寫不正確的語法來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; 
} 
0

錯誤與Font,這是一個類。該調用需要一個字體,即一個Font實例。

相關問題