Android 的 vtkSmartPointer
vtkSmartPointer with Android
what 可能是一个简单的问题,但是在查看 Android 上所有示例的代码时,我注意到示例中根本没有使用 vtkSmartPointer<>
。有什么特别的原因吗?我现在有点习惯使用它们了,我想知道它们的使用是否会导致一些问题?
例如,这是在 VolumeRenderer 中使用的 struct
:
struct userData
{
vtkRenderWindow *RenderWindow;
vtkRenderer *Renderer;
vtkAndroidRenderWindowInteractor *Interactor;
};
我只是尝试仅使用智能指针重新实现此示例,到目前为止我还没有 运行 任何问题,但我想知道这是否是个好主意。
所以这就是我所拥有的完全相同的结构:
struct userData
{
vtkSmartPointer<vtkRenderWindow> RenderWindow;
vtkSmartPointer<vtkRenderer> Renderer;
vtkSmartPointer<vtkAndroidRenderWindowInteractor> Interactor;
};
提前致谢。
在您的 Android(或 iOS)应用程序中使用 vtkNew and/or vtkSmartPointer 应该没有任何问题。在这种情况下,vtkNew 看起来更合适并保持强大的所有权,如果您出于某种原因需要在外部设置这些成员,那么 vtkSmartPointer 将是可行的方法。
有关哪个指针 class 合适的更多信息,我建议您查看此 Source article
这主要取决于 userData 的用例。使用 vtkSmartPointer 将增加 ref 计数器,因此只要 userData 有效,其他指针也将有效。但是,在这种情况下,您正在存储对渲染 window 对象的引用,这些对象可能会因为某些外部事件而消失,在这种情况下您要考虑使用 vtkWeakPointer.
what 可能是一个简单的问题,但是在查看 Android 上所有示例的代码时,我注意到示例中根本没有使用 vtkSmartPointer<>
。有什么特别的原因吗?我现在有点习惯使用它们了,我想知道它们的使用是否会导致一些问题?
例如,这是在 VolumeRenderer 中使用的 struct
:
struct userData
{
vtkRenderWindow *RenderWindow;
vtkRenderer *Renderer;
vtkAndroidRenderWindowInteractor *Interactor;
};
我只是尝试仅使用智能指针重新实现此示例,到目前为止我还没有 运行 任何问题,但我想知道这是否是个好主意。 所以这就是我所拥有的完全相同的结构:
struct userData
{
vtkSmartPointer<vtkRenderWindow> RenderWindow;
vtkSmartPointer<vtkRenderer> Renderer;
vtkSmartPointer<vtkAndroidRenderWindowInteractor> Interactor;
};
提前致谢。
在您的 Android(或 iOS)应用程序中使用 vtkNew and/or vtkSmartPointer 应该没有任何问题。在这种情况下,vtkNew 看起来更合适并保持强大的所有权,如果您出于某种原因需要在外部设置这些成员,那么 vtkSmartPointer 将是可行的方法。
有关哪个指针 class 合适的更多信息,我建议您查看此 Source article
这主要取决于 userData 的用例。使用 vtkSmartPointer 将增加 ref 计数器,因此只要 userData 有效,其他指针也将有效。但是,在这种情况下,您正在存储对渲染 window 对象的引用,这些对象可能会因为某些外部事件而消失,在这种情况下您要考虑使用 vtkWeakPointer.