我正在从 Julian Templeman 的书“Microsoft Visual C++ .NET”,2005 年版中学习 Visual C++。我正在使用 Visual Studio Express 2012。
我知道它处理被 C++/CLI 取代的旧托管 C++,所以我必须更改代码中的一些文本才能在 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 中编写。