Casting scoped pointers?


#1

I'm having some trouble after changing to scoped pointers in our code.

Is their an easy way to cast between two ScopedPointers of a parent and a dreived class? 


#2

Just use ScopedPointer::get() to return the underlying pointer and cast it as you used to. Just obviously don't hang on to it.


#3

For the life of me I can't seem to use the get funtion on a ScopedPointer 

 

ScopedPointer<MyClassType> ptr = new MyClassType();

MyOtherClassType *ptr2 = ScopedPointer::get(ptr);

 

What is the correct syntax?

 

 


#4

Basic c syntax…

ptr2 = ptr.get();

http://www.juce.com/api/classScopedPointer.html#ac65fb45b9eb2d53773489fcfbc6fd740

You can also use dynamic_cast

Rail


#5

Nearly - you want the dot operator, since you're calling a function on the pointer object, not the object the pointer points to!

ScopedPointer<Foo> scopedFooPtr (new Foo());
Foo* foo = scopedFooPtr.get();

 

 

 


#6

The dot operator is where I was coming a cropper,  wasn't expecting to use it at all on a pointer...thanks guys!