Я читаю 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.
Если я поместил() в конец, он скомпилирует, но не перерисовывает содержимое формы, если я положил конец (i), он выдает ошибку C2660: функция «System :: Object :: GetType» не принимает 1 аргументы – Lauri