Pointer to a Partially-Constructed Object

B

better_cs_now

Hello all,

Please consider the following code:

class Bar;

class Foo {
Bar *m_pBar;
public:
Foo(Bar *pBar): m_pBar(pBar) {}
};

class Bar {
Foo m_Foo;
public:
Bar(): m_Foo(this) {}
};

It would certainly be wrong for Foo::Foo() to dereference pBar since
the Bar object is still being constructed and therefore does not
exist. However, is it wrong to even cache off the pointer for later
use as shown?

Thanks,
Dave
 
R

Rolf Magnus

Hello all,

Please consider the following code:

class Bar;

class Foo {
Bar *m_pBar;
public:
Foo(Bar *pBar): m_pBar(pBar) {}
};

class Bar {
Foo m_Foo;
public:
Bar(): m_Foo(this) {}
};

It would certainly be wrong for Foo::Foo() to dereference pBar since
the Bar object is still being constructed and therefore does not
exist. However, is it wrong to even cache off the pointer for later
use as shown?

No. If you only store the pointer value, that's fine.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,770
Messages
2,569,583
Members
45,073
Latest member
DarinCeden

Latest Threads

Top