1

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

4

1 回答 1

4

正如您似乎知道的那样,您不能在运行时做出选择,因为编译会失败。

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

#if (VTK_MAJOR_VERSION < 6)
plane->SetInput(rgrid);
#else
plane->SetInputData(rgrid);
#endif
于 2013-10-21T15:15:00.773 回答