Talk About Network

Google


Register and Login
Nick
Password
Register create new account Sign up is FREE and you can post replies, new topics, bookmark posts and more!
Recover lost password


Programming > C++ Moderated > Re: Smart-point...
Latest [ Topics | Posts ] Archive Post A New Topic Post a Reply
<< Topic < Post Post 4 of 7 Topic 9545 of 9830
Post > Topic >>

Re: Smart-pointer pimpl and compiler-generated destructors.

by acehreli@[EMAIL PROTECTED] Apr 25, 2008 at 04:13 PM

On Apr 25, 9:53 am, rwf_20 <rfr...@[EMAIL PROTECTED]
> wrote:

> // myClass.h
>
> #include <memory>
>
> class myClass {
[...]
>    std::auto_ptr<struct myStruct> m_pimpl;
>
> };
[...]
> myClass::myClass() : m_pimpl(std::auto_ptr<myStruct>(new myStruct()))

You can write this instead:

         m_pimpl(new myStruct())

because that is an explicit construction.

> This compiles just fine, until I try to use myClass elsewhere.  At
> this point, I get warnings like:
>
> "deletion of pointer to incomplete type 'myStruct'; no destructor
> called"
>
> I guess I understand why this happens, and it's fixed by declaring a
> destructor for myClass and defining it in the .cpp file.  It just irks
> me that I need to define a blank destructor (the same thing the
> compiler should generate) to make this work.

That's just what you have to do. Though I heard that the Boost
library's shared_ptr has machinery built in to overcome this. You
might want to look at how they did it.

> Googling this issue, I
> findhttp://www.gotw.ca/publications/using_auto_ptr_effectively.htm,
> in which Mr. Sutter demonstrates this same code and adds the comment:
>
> "In fact, if there's no other reason for explicitly writing a
> destructor, we don't need to bother with a custom destructor at all
> any more."

I don't have Exceptional C++ handy, but I bet Herb Sutter has
corrected that in his book. The reason that I am sure is that this
issue came up some time ago and was inspiration for me to write this
little piece:

http://www.accu-usa.org/2002-02-Main.html

There are mistakes in my text as well, but it proves to me that Herb
Sutter does define the destructor empty in the implementation file in
his book.

Ali

-- 
      [ See http://www.gotw.ca/resources/clcm.htm
for info about ]
      [ comp.lang.c++.moderated.    First time posters: Do this! ]
 




 7 Posts in Topic:
Smart-pointer pimpl and compiler-generated destructors.
rwf_20 <rfrenz@[EMAIL   2008-04-25 10:53:17 
Re: Smart-pointer pimpl and compiler-generated destructors.
Travis Vitek <travis.v  2008-04-25 15:48:58 
Re: Smart-pointer pimpl and compiler-generated destructors.
nickf3 <nickf3@[EMAIL   2008-04-25 16:13:20 
Re: Smart-pointer pimpl and compiler-generated destructors.
acehreli@[EMAIL PROTECTED  2008-04-25 16:13:19 
Re: Smart-pointer pimpl and compiler-generated destructors.
=?ISO-8859-1?Q?Daniel_Kr=  2008-04-26 03:28:12 
Re: Smart-pointer pimpl and compiler-generated destructors.
Martin T <0xCDCDCDCD@[  2008-04-26 03:27:48 
Re: Smart-pointer pimpl and compiler-generated destructors.
Carl Barron <cbarron41  2008-04-26 03:34:41 

Post A Reply:
  Go here to Signup

AddThis Feed Button


About - Advertising - Contact - Frequently Asked Questions - Privacy Policy - Terms of Use - Signup

Contact
tan12V112 Fri Jul 25 15:41:03 CDT 2008.