This is a virtual function that the inheriting class does not implement: The problem function call is a pure virtual that QoccSnap doesn't implement the inheriting class does: bool QoccSnap::Snap(QPoint& pos, V3d_Coordinate& X, V3d_Coordinate& Y, V3d_Coordinate& Z) { AIS_ListOfInteractive aList; myContext->DisplayedObjects( aList ); AIS_ListIteratorOfListOfInteractive aListIterator; for ( aListIterator.Initialize( aList ); aListIterator.More(); aListIterator.Next() ) { if (aListIterator.Value ()->IsKind (STANDARD_TYPE (AIS_Shape))) { Handle(AIS_Shape) aisShape = Handle(AIS_Shape)::DownCast(aListIterator.Value()); const TopoDS_Shape& aShape = aisShape->Shape(); if(aShape.ShapeType() == mySignature) { ----Problem is here------> if(SnapLocation(aisShape, X, Y, Z)) { } } } else cout << "Not a Shape" << endl; } return false; }