我正在使用VTK做某事,但我的问题可能很普遍。
在VTK版本中< 6.0,类vtkPolyDataMapper
具有名为SetInput
的成员函数,但在其版本6.0中,它更改为SetInputData
。所以在版本6中,我必须,
vtkSmartPointer<vtkPolyDataMapper> polyDataMapper
= vtkPolyDataMapper::New();
polyDataMapper->SetInputData(polyData);
// polyDataMapper->SetInput(polyData);
理想情况下,我希望这种情况可以像
一样轻松处理if (vtkVersion::GetVTKMajorVersion() < 6)
{
plane->SetInput(rgrid);
}
else
{
plane->SetInputData(rgrid);
}
但是你知道这不正确,所以我的问题是:C ++处理这种情况的最佳方法是什么。
答案 0 :(得分:4)
您似乎知道,您不能在运行时选择,因为编译将失败。
相反,您可以利用预处理器将正确的代码传递给编译器。这是可能的,因为VTK会为您在预处理器宏中公开其版本:
#if (VTK_MAJOR_VERSION < 6)
plane->SetInput(rgrid);
#else
plane->SetInputData(rgrid);
#endif