Ошибка: «Выражение должно иметь тип класса» C ++ / CLI - PullRequest
0 голосов
/ 05 января 2012

Не уверен, почему это не скомпилируется.Какую ошибку я здесь делаю и как ее исправить?Я пытаюсь скомпилировать этот код, который я нашел в примере, но мой компилятор должен иметь более строгие настройки, чем их или, возможно, другую версию компилятора.Код должен просто открыть форму окна и отобразить текст.

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);
    }   
}

Ответы [ 2 ]

0 голосов
/ 05 января 2012

Ошибка с Font, который является классом.В вызове ожидается шрифт, то есть экземпляр Font.

0 голосов
/ 05 января 2012

Вы записали неправильный синтаксис для 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...