MemoryManager openMemory() {
if (...) {
return memory_manager_instance;
}
else
return NULL;
}
MemoryManager
是用户定义的C ++类的名称。上面的函数定义给出了标题中的错误。
基本上我不希望在条件不成立时返回实例。这样的函数定义是有效的,我通常用Java做的,但它似乎不适用于C ++。我该怎么做才能解决这个问题?
答案 0 :(得分:6)
让函数返回MemoryManager *
(可能使用C ++库或boost中提供的几个智能指针类之一)。如果MemoryManager
是类的名称,则写入的此函数将返回memory_manager_instance
的副本。这与Java不同,Java中MemoryManager
类型的变量将是对象的引用。
编辑:此外,您似乎正在尝试实施单例。您需要为MemoryManager
private或protected设置默认构造函数,复制构造函数和赋值运算符。前两个也在Java中,但不是最后一个!