Totally a minor problem here, but I thought I would ask for help in explaining smart pointers a little.
I'm trying to get a better handle on pointers and c++11 smart pointers, but I think I'm misunderstanding smart pointers a little. Most of the references I've come across haven't been of too much use, as they're mostly geared toward a more experienced programmer, I feel. I understand the auto-deletion of unique_ptrs when they go out of scope, and why that's desirable. But, I'm having quite a bit of difficulty using them the same way as a normal pointer.
Typically, one could make a pointer and have it equal a reference object like:
int firstNumber = 10;
int *pointer1;
pointer1 = &firstNumber;//*pointer1 is the value located at memory of firstNumber.
I've been trying to get the same functionality with std::unique_ptr and am failing to really understand how to initialize them and use them.
Trying:
int firstNumber = 10;
std::unique_ptr < int > pointer1;
pointer1 = &firstNumber;
results in an error. |459|error: no match for ‘operator=’ (operand types are ‘std::unique_ptr<int>’ and ‘int*’)|
Fair enough. But, if I change that to:
int firstNumber = 10;
//std::unique_ptr< int > pointer1(new int(&firstNumber));//results in error
//std::unique_ptr< int > pointer1(new int(firstNumber));//doesn't seem to reference memory at firstNumber
std::unique_ptr< int > pointer1(new int(10));
pointer1 = &firstNumber;//results in same error,
*pointer1 = firstNumber//doesn't reference memory at firstNumber.
*pointer1 = &firstNumber//results in error
I've tried:
int firstNumber = 10;
std::unique_ptr < int > pointer1(new int(10));
std::unique_ptr < int > pointer2(new int(20));
*pointer2 = firstNumber;
pointer1 = pointer2;//results in error
pointer1 = *pointer2;//does change pointer 1 but doesn't seem to reference firstNumber, nor memory at pointer2
I'm feeling a little on the dumb side for not grasping this, but I'm obviously missing something(or maybe many things).
I'm apparently doing something wrong, but it feels like the unique_ptr isn't actually behaving like a pointer at all, functionality-wise.
Anyhow, any advice or help in understanding the functionality of unique_ptrs would be extremely appreciated. Feel absolutely free to dumb things down, I will not feel patronized or condescended to in the slightest :)
Thanks in advance, :D