无法将'0l'从'long int'转换为'MemoryManager'

时间:2011-12-13 18:26:58

标签: c++ class function null type-conversion

MemoryManager openMemory() {
  if (...) {
    return memory_manager_instance;
  }
  else 
    return NULL;
}

MemoryManager是用户定义的C ++类的名称。上面的函数定义给出了标题中的错误。

基本上我不希望在条件不成立时返回实例。这样的函数定义是有效的,我通常用Java做的,但它似乎不适用于C ++。我该怎么做才能解决这个问题?

1 个答案:

答案 0 :(得分:6)

让函数返回MemoryManager *(可能使用C ++库或boost中提供的几个智能指针类之一)。如果MemoryManager是类的名称,则写入的此函数将返回memory_manager_instance的副本。这与Java不同,Java中MemoryManager类型的变量将是对象的引用。

编辑:此外,您似乎正在尝试实施单例。您需要为MemoryManager private或protected设置默认构造函数,复制构造函数和赋值运算符。前两个也在Java中,但不是最后一个!