gpt4 book ai didi

c++ - 如何测试自动指针是否为空?

转载 作者:可可西里 更新时间:2023-11-01 16:57:01 28 4
gpt4 key购买 nike

我是自动指针的新手。我有这个:

std::auto_ptr<myClass> myPointer(new MyClass(someArg));

如何测试能否成功实例化myPointer?我尝试了 if (myPointer==NULL) 并且编译器发出错误:

no operator "==" matches these operands.

最佳答案

“实例化”是什么意思?

在符合标准的实现中,要么构造MyClass成功,或者抛出异常并且 auto_ptr将不再在范围内。因此,在您提供的示例中,指针的值由您的 auto_ptr 表示不能NULL .

(您可能正在使用不支持异常的实现,它可以在分配失败时返回 NULL(而不是抛出异常),即使不使用 (nothrow) 说明符,但这不是一般情况。)


一般来说,您可以检查指针的值。您只需要了解底层表示,因为正如您所发现的那样,std::auto_ptr没有 operator== .

为此,请使用 X* std::auto_ptr<X>::get() const throw() ,像这样:

if (myPointer.get()) {
// ...
}

另请注意 std::auto_ptr is deprecated in C++0x, in favour of std::unique_ptr .在您可以访问符合标准的实现的情况下,更喜欢后者。

关于c++ - 如何测试自动指针是否为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7070105/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com