I have a problem with defining operator !
for my class. I use shared_ptr<A>
objects and I would like to use !
on them.
shared_ptr<a> b;
bool result = !b; // using my operator, not !shared_ptr
I tried few times but I'm getting ambiguous error.
CodePudding user response:
Try this
shared_ptr b;
bool result = !*b;
CodePudding user response:
You cannot do that. You need to dereference the pointer first.
bool result = b and !(*b);
CodePudding user response:
shared_ptr
doesn't have an operator!
defined, but you can compare the pointer it is holding, eg:
shared_ptr<a> b;
bool result = !b.get();
Alternatively, it does have an operator bool
defined:
shared_ptr<a> b;
bool result = !(bool)b; // or: !static_cast<bool>(b)
Alternatively, it also has operator==
defined for nullptr
:
shared_ptr<a> b;
bool result = (b == nullptr);