根据版本切换成员函数名称

时间:2013-10-21 15:10:17

标签: c++ version vtk member-functions

我正在使用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 ++处理这种情况的最佳方法是什么。

1 个答案:

答案 0 :(得分:4)

您似乎知道,您不能在运行时选择,因为编译将失败。

相反,您可以利用预处理器将正确的代码传递给编译器。这是可能的,因为VTK会为您在预处理器宏中公开其版本:

#if (VTK_MAJOR_VERSION < 6)
plane->SetInput(rgrid);
#else
plane->SetInputData(rgrid);
#endif