I want to have a managed pointer (unique or shared) and be able to reassign it with new piece of memory and also be sure that old memory is deleted (as it's supposed to be) with managed pointers.
struct MyStruct
{
MyStruct(signed int) { }
MyStruct(unsigned float) { }
};
std::unique_ptr<MyStruct> y(new MyStruct(-4)); // int instance
std::shared_ptr<MyStruct> x(new MyStruct(-5));
// do something with x or y
//...
// until now pointers worked as "int" next we want to change it to work as float
x = new MyStruct(4.443);
y = new MyStruct(3.22); // does not work
How would I achieve this in most clean way?
unsigned float, justfloatworks. You should also usenew MyStruct(4.443f)to avoid an ambiguous call issue since4.443is a double and can be converted to either an int or float.