Scenario:
I am using a method from an old C++ library which returns a raw pointer to SomeClass
where SomeClass
is an exported class from a library header say SomeClass.h
Following is the signature of LibraryMethod
that I am using:
SomeClass* LibraryMethod();
I don't have access to change the library. I am using only the binary & public header which is a typical scenario.
I dont want to use raw pointers in my part of the code. Hence, I have a shared pointer to SomeClass
in my part of the code using the library API.
std::shared_ptr<SomeClass> some_class;
which I initialise like this to avoid storing a raw pointer to SomeClass
some_class = (std::shared_ptr<SomeClass>)LibraryMethod();
This basically works but I want to understand the details here
Question:
Is the above a correct technique ?
Am I causing a leak here ?
Are there any better techniques to handle such a scenario ?