【发布时间】:2017-10-12 22:44:50
【问题描述】:
我对 C++ 还很陌生,我正在开发一个项目,其中我有一个声明如下的方法:
SupportTicket SupportProcessor::getSupportTicket(int supportRef)
上述方法在数据库中查找记录,如果找到将返回SupportTicket 类型的对象。但是,如果现在找到它,要么是因为未找到 supportRef,要么是因为数据库错误,我不想返回任何内容,即NULL。虽然方法本身没有抱怨,但当我检查返回的值是否为 NULL 时,我得到了一个错误。
例如,我调用我的方法如下:
SupportTicket supportTicket = this->getSupportTicket(1);
if (supportTicket != NULL)
{
//The record was found
}
else
{
//The record was not found or an error occurred
}
我得到的错误是:
no operator "!=" matches these operands
binary '!=' no operator found which takes a left-hand operand of type 'SupportTicket' (or there is no acceptable conversion)
在 getSupportTicket 方法中,我尝试了返回 NULL 和 nullptr
我来自 C# 背景,所以这通常完全没问题,那么我将如何在 C++ 中做到这一点。我知道在方法中,我可以通过执行return new SupportTicket() 在堆上分配返回值,然后在返回它的方法中删除它,但这似乎有点矫枉过正,或者这是唯一的方法。
【问题讨论】:
-
如果方法返回一个对象,它不能返回
NULL。NULL是一个指针值。你可以让它抛出一个异常。或者让它返回一个unique_ptr<SupportTicket>。
标签: c++ object return-value