[vtkusers] Re: vtkusers Digest, Vol 2, Issue 28
Sean McInerney
seanm at nmr.mgh.harvard.edu
Wed Jun 9 10:37:13 EDT 2004
I have never been a defender of VC++, but I have to second Julien here.
Not only are the parentheses unnecessary here, they make the declaration
look suspiciously like a "pointer to an array of 20 vtkBclass" instead
of the desired "array of 20 pointers to vtkBclass" (good old C syntax
and operator precedence). Does this pass language lawyer muster?
-Sean
> Date: Wed, 9 Jun 2004 09:26:28 +0200
> From: ALIZIER Julien AUSY <julien.alizier-ausy at irsn.fr>
> Subject: RE: [vtkusers] syntax question
> To: "VTK Mailling List (E-mail)" <vtkusers at vtk.org>
> Message-ID: <4EB6E1738CC2E940BAD2EFBFBF5A38F101C3B20C at OREADE.ipsn.fr>
> Content-Type: text/plain; charset="iso-8859-1"
>
> Hi AJ,
>
> Your code is correct.
>
> Just for information, I saw somewhere in a newsgroup that using parenthesis
> with new is illegal.
> Gcc accept it but VC++ 6, for instance, doesn't.
>
> You should write
> vtkBclass **Stuff = new vtkBclass * [20];
> instead of
> vtkBclass **Stuff = new (vtkBclass *)[20];
>
>
> -- Julien
>
>
>
> -----Message d'origine-----
> De : A J [mailto:lost_bits1110 at hotmail.com]
> Envoyé : mardi 8 juin 2004 22:51
> À : tfogal at apollo.sr.unh.edu; vtkusers at vtk.org
> Objet : Re: [vtkusers] syntax question
>
>
> So does that seem logical?
> Btw thanks for your tip on gdb thats great
> Thanks again,
> AJ
>
>
>
>
>>OKAY I'm retarded I got it finally!!
>>So here's how you go about it:
>>
>>
>>vtkBclass **Stuff = new (vtkBclass *)[20];
>>for (int i=0; i<20; i++)
>> Stuff[i] = vtkStuff::New();
>>
>>Stuff[5]->HelloWorld();
>>
>>cout<<"hello world completed"<<endl;
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>>I'm surprised it works at all... Stuff[1] through Stuff[19]
>>>won't be memory you own, and yet it is assigned to.
>>>
>>>what does the debugger say it is crashing on?
>>>
>>>I' m guessing you are in a Windows environment. I'm not very
>>>familiar with Windows but I know that UNIX libc implementations
>>>almost always have an environment variable you can set to allow
>>>you to debug malloc() calls (MALLOC_CHECK_ on linux,
>>>MALLOC_OPTIONS on freebsd, etc.). Perhaps there is a similar
>>>mechanism available on Windows?
>>>You may wish to try setting it and see if its an allocation
>>>issue...
>>>
>>>-tom
>>>
>>> <BAY99-F64sQPwFpH2cX000036f3 at hotmail.com>"A J" writes:
>>>
>>>>Okay I almost have it... but I get a 'segmentation fault' at the end:
>>>>
>>>>vtkBclass **Stuff;
>>>>for (int i=0; i<20; i++)
>>>> Stuff[i] = vtkBclass::New();
>>>>
>>>>Stuff[0]->HelloWorld();
>>>>
>>>>.. and then it crashes after it finishes executing the HelloWorld
>>>>function.....
>>>>!!!!
>>>>
>>>>so close but no cigar..!! :o(
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>>Oh hrm, I seem to have totally glazed over that you were
>>>>>trying to allocate an array... Sorry 'bout that.
>>>>>
>>>>>Interesting question. Perhaps
>>>>>
>>>>>vtkBclass **stuff = vtkBclass::New()*[number]
>>>>>
>>>>>would do what you wanted?
>>>>>
>>>>>Just a stab in the dark.. I'll be interested to hear the
>>>>>solution.
>>>>>
>>>>>-tom
>>>>>
>>>>> <BAY99-F53CTVuy16xso0000c978 at hotmail.com>"A J" writes:
>>>>>
>>>>>>Yes thanks tom , I've already inherited these from vtkObject,
>>>>>>but now this means that instead of doing
>>>>>>
>>>>>>Bclass *stuff = new Bclass[ number ]
>>>>>>
>>>>>>I now have to do something like
>>>>>>
>>>>>>vtkBclass **stuff = vtkBclass::New() [number]
>>>>>>
>>>>>>or...???
>>>>>>
>>>>>>I just want a pointer to an array of vtkBclass's, not just one which
>>>>>
>>>>>would
>>>>>
>>>>>>obviously just be
>>>>>>vtkBclass *stuff = vtkBclass::New();
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>>AJ, use Bclass' New() member function.
>>>>>>>
>>>>>>>You should derive Bclass (and Aclass, for that matter) from a
>>>>>>>vtkObject and it will then automagically obtain the vtkObject::New()
>>>>>>>member function.
>>>>>>>
>>>>>>>Also, you should make sure your vtk* objects have their constructors
>>>>>>>and destructors declared as protected, and additionally that the
>>>>>>>destructors are declared virtual.
>>>>>>>
>>>>>>>HTH,
>>>>>>>
>>>>>>>-tom
>>>>>>>
>>>>>>> <BAY99-F504GCjNNsqlt0003748a at hotmail.com>"A J" writes:
>>>>>>>
>>>>>>>>Hi,
>>>>>>>>
>>>>>>>>Say I have my own classes called Aclass and Bclass
>>>>>>>>
>>>>>>>>and say I have now wrapped these to VTK classes so they are now
>>>
>>>known
>>>
>>>>>as
>>>>>
>>>>>>>>vtkAclass and vtkBclass
>>>>>>>>
>>>>>>>>Originally, I had:
>>>>>>>>
>>>>>>>>class Aclass
>>>>>>>>{
>>>>>>>>
>>>>>>>>public:
>>>>>>>>Bclass *stuff = new Bclass[ number ]
>>>>>>>> ....
>>>>>>>>}
>>>>>>>>
>>>>>>>>
>>>>>>>>So now that Aclass has become vtkAclass and same for vtkBclass..
>>>
>>>what
>>>
>>>>>is
>>>>>
>>>>>>>the
>>>>>>>
>>>>>>>>syntax to do this with the New() operator that I now have to
>>>
>>>use..? I
>>>
>>>>>>>had
>>>>>>>
>>>>>>>>tried a few things but nothign works so far.. it must be something
>>>>>
>>>>>very
>>>>>
>>>>>>>>basic..! =S
>>>>>>>>
>>>>>>>>Thanks!!
>>>>>>>>
>>>>>>>>_________________________________________________________________
>>>>>>>>Watch the online reality show Mixed Messages with a friend and
>>>
>>>enter
>>>
>>>>>to
>>>>>
>>>>>>>win
>>>>>>>
>>>>>>>>a trip to NY
>>>>>>>
>>http://www.msnmessenger-download.click-url.com/go/onm00200497ave/direct/01/
>>
>>>>>>>>_______________________________________________
>>>>>>>>This is the private VTK discussion list.
>>>>>>>>Please keep messages on-topic. Check the FAQ at:
>>>>>>>
>>>>>>><http://public.kitware.com/cgi-bin/vtkfaq>
>>>>>>>
>>>>>>>>Follow this link to subscribe/unsubscribe:
>>>>>>>>http://www.vtk.org/mailman/listinfo/vtkusers
>>>>>>
>>>>>>_________________________________________________________________
>>>>>>Is your PC infected? Get a FREE online computer virus scan from
>>>
>>>McAfee®
>>>
>>>>>>Security. http://clinic.mcafee.com/clinic/ibuy/campaign.asp?cid=3963
>>>>>>
>>>>>>_______________________________________________
>>>>>>This is the private VTK discussion list.
>>>>>>Please keep messages on-topic. Check the FAQ at:
>>>>>
>>>>><http://public.kitware.com/cgi-bin/vtkfaq>
>>>>>
>>>>>>Follow this link to subscribe/unsubscribe:
>>>>>>http://www.vtk.org/mailman/listinfo/vtkusers
>>>>
>>>>_________________________________________________________________
>>>>FREE pop-up blocking with the new MSN Toolbar - get it now!
>>>>http://toolbar.msn.click-url.com/go/onm00200415ave/direct/01/
>>
>>_________________________________________________________________
>>MSN Toolbar provides one-click access to Hotmail from any Web page - FREE
>>download! http://toolbar.msn.click-url.com/go/onm00200413ave/direct/01/
>>
>>_______________________________________________
>>This is the private VTK discussion list. Please keep messages on-topic.
>>Check the FAQ at: <http://public.kitware.com/cgi-bin/vtkfaq>
>>Follow this link to subscribe/unsubscribe:
>>http://www.vtk.org/mailman/listinfo/vtkusers
>
>
> _________________________________________________________________
> Get fast, reliable Internet access with MSN 9 Dial-up - now 3 months FREE!
> http://join.msn.click-url.com/go/onm00200361ave/direct/01/
>
> _______________________________________________
> This is the private VTK discussion list.
> Please keep messages on-topic. Check the FAQ at:
> <http://public.kitware.com/cgi-bin/vtkfaq>
> Follow this link to subscribe/unsubscribe:
> http://www.vtk.org/mailman/listinfo/vtkusers
>
More information about the vtkusers
mailing list