這裏MyLineShape
對象b
通過引用傳遞給此函數(在MyCustomWidget
類中):和myShape
是Shapes
指針。複製引用的對象和調用虛擬方法C++
void MyCustomWidget::setDrawingObject(Shapes &b){
myShape = &b;
myShape->setPoint1();
}
它的工作,即它調用myShapes setPoint1()方法。但是當我嘗試使用這個MyCustomWidget類的其他部分時
myShape->setPoint1();
該程序崩潰。也許這是因爲範圍? setPoint1()
是一個虛擬函數,因爲不同的形狀類分別實現它。所以我想要做的是在setDrawingObject
函數中告訴它從引用接收到哪個對象,併爲該類的其他函數調用複製該類型的對象以備後用。怎麼做?
當程序崩潰時,你會得到什麼樣的錯誤信息?你能告訴我們你的程序崩潰的功能嗎?這將有助於很多。 – Cubia
請在shapeClasses分支上查看:github.com/adolescent/WaterPaint.git。要查看的文件是mainwindow.cpp和MyCustomWiget.cpp – ruben
你說過「但是當在MyCustomWidget類的其他部分」時。你的代碼的哪部分崩潰?請詳細說明你的解釋。 – Cubia