[vtk-developers] Smart pointer declaration macro?

David Gobbi david.gobbi at gmail.com
Fri Jan 8 15:26:20 EST 2010


On Fri, Jan 8, 2010 at 1:15 PM, David Doria <daviddoria+vtk at gmail.com> wrote:
> I've seen the use of something like this:
>
> #define SPNEW(instance, type) \
> vtkSmartPointer<type> instance = vtkSmartPointer<type>::New();
>
> in many of the tests and elsewhere. It seems like a reasonable savings
> of a whole bunch of characters that appears many many times in most
> functions. Could we standardize something like this so it can be used
> universally without having to see this little #define in every file it
> is used in?
>
> Thoughts?

Doesn't VTK have enough macros already? ;)

There are other ways to reduce the repetition, without using macros:

1) Add a new constructor argument for smart pointers:

vtkSmartPointer<type> instance(1); // create an smart pointer and
allocate an object at the same time
vtkSmartPointer<type> instance(0); // create a smart pointer with
"null" as the initial pointer

2) Add a non-static "New" method for smart pointers:

vtkSmartPointer<type> instance;
instance.InstantiateNew();

etc.

   David



More information about the vtk-developers mailing list