Boost logo

Boost Users :

Subject: [Boost-users] [smart pointer] need .get() to access derived class method?
From: Diederick C. Niehorster (dcnieho_at_[hidden])
Date: 2010-01-25 00:56:13


Hi All,

I am trying to wrap my head around using shared pointer, but I find
the documentation hard to follow, not being a professional programmer.

I have a base class, from which many classes are derived and I hold
the derived class instance as a point of type baseclass. Usually, I
only need access to the base class methods, but now i need to access
some of the derived class's methods. How do I do that from a shared
pointer?

I now have some mix of shared_pointer and "old style" pointer logic in
my code, what am I missing?

---
_pcStim = boost::shared_ptr<CStim>(new CStimUniform2D()); // create
derived instance and store as base
CStim* pCStimU = _pcStim.get(); // get raw pointer
((boost::shared_ptr<CStimUniform2D>)(_pcStim))->setNPointGround()=300;
// this does not work, what do I need here?
((CStimUniform2D*)pCStimU)->SetPointColor()=_pRoomData->dotColor(); //
casting the raw pointer I am fine.
---
Best regards and thank you for your reply,
Diederick Niehorster

Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net