Afficher un message
Vieux 07/12/2007, 09h50   #4
yurec
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Class members that MUST be initialized by temporary objects in amember initialization list

On Dec 6, 4:53 am, "Alf P. Steinbach" <al...@start.no> wrote:
> * Olumide:
>
>
>
>
>
> > Hello C++ gurus,

>
> > I've got this basic class thats the backbone of my project and I
> > frequently use use an instance of it to initialize other objects like
> > so. However, my latest class, a simple assignment in a constructor did
> > not work, like so:

>
> > class VeryBasicClass{
> > public:
> > VeryBasicClass(){};
> > };

>
> > class LatestClass{
> > public:
> > LatestClass( VeryBasicClass &vbo );
> > private:
> > VeryBasicClass veryBasicObject;
> > };

>
> > LatestClass::LatestClass( VeryBasicClass &vbo )
> > {
> > veryBasicObject = vbo; // this does not work
> > // halts plugin execution
> > }

>
> > The following constructor caused the environment (I'm developing a
> > plugin) to crash with a BLOCK_TYPE_IS_VALID assert

>
> > LatestClass::LatestClass( VeryBasicClass &vbo ):veryBasicObject( vbo )
> > {
> > }

>
> > The following constructor however worked

>
> > LatestClass::LatestClass( VeryBasicClass
> > &vbo ):veryBasicObject( VeryBasicObject() )
> > {
> > }

>
> > I would know why the first why the first two constructors failed, and
> > the only the third works, and I'd hate to be in the dark about these
> > things. Its better to know whats going on in case something goes
> > wrong.

>
> > All thats unique about VeryBasicClass is that itself contains a member
> > object that must be initialized by a temporary object in a member
> > initialization lists of a constructor. I'm not the author of the
> > members class (its part of the plugin API).

>
> It seems that at the end of writing the above, in the very last
> paragraph, a glimmer of insight started to surface. Try to follow that
> thought. All that came before is worthless for diagnosing what the
> technical problem is.
>
> Cheers, & hth.,
>
> - Alf
>
> --
> A: Because it messes up the order in which people normally read text.
> Q: Why is it such a bad thing?
> A: Top-posting.
> Q: What is the most annoying thing on usenet and in e-mail?- Hide quoted text -
>
> - Show quoted text -


I think you know, but to be sure : you'll get slicing while copying
VeryBasicClass ( as it's value in your member list)
Maybe something is missed in copying VeryBasicClass?
  Réponse avec citation
 
Page generated in 0,06699 seconds with 9 queries