【发布时间】:2012-01-19 14:57:27
【问题描述】:
MemoryManager openMemory() {
if (...) {
return memory_manager_instance;
}
else
return NULL;
}
MemoryManager 是用户定义的 C++ 类的名称。上面的函数定义给了我标题中的错误。
基本上我不想在条件不成立时返回实例。这种函数定义是有效的,也是我通常在 Java 中所做的,但它似乎不适用于 C++。我应该怎么做才能解决这个问题?
【问题讨论】:
-
Java 只有指针,这就是为什么你可以返回 NULL 对象。在 C++ 中,您的代码需要 MemoryManager 中的转换构造函数,该构造函数不存在或者是显式的。您可能打算返回一个指针而不是一个值。您也可能需要抛出异常或返回默认的初始化对象 - 无法从您的问题中看出。
-
阅读 mkb 的答案,以便您了解正在发生的事情。然后,在这个特定实例中返回 NULL 可能不是你想要的——你可能应该抛出一个异常(正如@Gene 所说)。
标签: c++ class function null type-conversion