0

Я читаю Visual C++ из книги Джулиана Темплмена «Microsoft Visual C++ .NET», выпуск 2005 года. Я использую Visual Studio Express 2012.Перегруженная функция C++ C2681, dynamic_cast

Я знаю, что он имеет дело со старым управляемым C++, который заменяется C++/CLI, поэтому я должен изменить текст в коде для работы в cli.

Однако, когда есть код собирается напечатать еще раз содержимое окна, когда окно получить минимизированы или назад, я получаю ошибку

C2681: «перегруженной функции»: недействительный тип выражения для dynamic_cast

Вот функция где он бросает, что:

void Form_Paint(Object^ pSender, PaintEventArgs^ pe) 
{ 
    Graphics^ gr = pe->Graphics; 
    Pen^ pen1 = gcnew Pen(Color::Black); 

    for(int i=0; i<list->Count; i++) 
    { 
     Line^ pline = dynamic_cast<Line^>(pline->GetType); //C2681 
     gr->DrawLine(pen1, pline->p1.X,pline->p1.Y,pline->p2.X,pline->p2.Y); 
    } 
} 

оригинал из книги выглядит так:

void Form_Paint(Object* pSender, PaintEventArgs* pe) 
{ 
    Graphics* gr = pe->Graphics; 
    Pen* pen1 = new Pen(Color::Black); 

    for(int i=0; i<list->Count; i++) 
    { 
     Line* pline = dynamic_cast<Line*>(pline->get_Item(i)); 
     gr->DrawLine(pen1, pline->p1.X,pline->p1.Y,pline->p2.X,pline->p2.Y); 
    } 
} 

Также я не знаю, как написать pline->get_Item(i) в CLI.

ответ

0

Я бы предположил, что pline->GetType должен быть pline->GetType(), потому что GetType() является функцией.

+0

Если я поместил() в конец, он скомпилирует, но не перерисовывает содержимое формы, если я положил конец (i), он выдает ошибку C2660: функция «System :: Object :: GetType» не принимает 1 аргументы – Lauri

Смежные вопросы