Add reset()
This commit is contained in:
parent
ddaae32525
commit
11555ded36
@ -118,6 +118,15 @@ public:
|
|||||||
other.ptr = nullptr;
|
other.ptr = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void reset()
|
||||||
|
{
|
||||||
|
if (ptr)
|
||||||
|
{
|
||||||
|
ptr->rcp_dec();
|
||||||
|
ptr = nullptr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
T * get_raw() const
|
T * get_raw() const
|
||||||
{
|
{
|
||||||
return ptr;
|
return ptr;
|
||||||
|
|||||||
@ -181,6 +181,15 @@ void test_move_assignment_releases_existing()
|
|||||||
assert(mybase_destruct == destructed_before + 2);
|
assert(mybase_destruct == destructed_before + 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void test_reset()
|
||||||
|
{
|
||||||
|
int destructed_before = mybase_destruct;
|
||||||
|
MyB p = MyB::create(1, 2);
|
||||||
|
p.reset();
|
||||||
|
assert(!p);
|
||||||
|
assert(mybase_destruct == destructed_before + 1);
|
||||||
|
}
|
||||||
|
|
||||||
void test_upcast()
|
void test_upcast()
|
||||||
{
|
{
|
||||||
rcp<MyDerived> derived = MyDerived::create(1.5);
|
rcp<MyDerived> derived = MyDerived::create(1.5);
|
||||||
@ -229,6 +238,7 @@ int main(int argc, char * argv[])
|
|||||||
test_create();
|
test_create();
|
||||||
test_multi_construct_from_raw_pointers();
|
test_multi_construct_from_raw_pointers();
|
||||||
test_copy_assignment_decrements_previous_reference();
|
test_copy_assignment_decrements_previous_reference();
|
||||||
|
test_reset();
|
||||||
test_move_constructor();
|
test_move_constructor();
|
||||||
test_move_assignment();
|
test_move_assignment();
|
||||||
test_move_assignment_releases_existing();
|
test_move_assignment_releases_existing();
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user