C++ 函数能否返回0作为引用

C++ 函数能否返回0作为引用,c++,C++,我这样使用它: no match for 'operator!' in '!((Company*)this)->Company::findAccount(id)' 你不能返回C++中的“空引用”,因为在这个语言中没有这样的概念。 如果是帐户>代码>或“不帐户< /代码>,结果是返回一个帐户* .p/> 不能返回C++中的“空引用”,因为在该语言中没有这样的概念。 如果结果可能是帐户或否帐户,一种方法是返回帐户*否,这是不可能的。看起来函数可能已从返回指针(Account*)更改为返回引

我这样使用它:

no match for 'operator!' in '!((Company*)this)->Company::findAccount(id)'
<谢谢>

你不能返回C++中的“空引用”,因为在这个语言中没有这样的概念。 <>如果是<代码>帐户>代码>或“不<代码>帐户< /代码>,结果是返回一个<代码>帐户*<代码> .p/> 不能返回C++中的“空引用”,因为在该语言中没有这样的概念。
如果结果可能是
帐户
或否
帐户
,一种方法是返回
帐户*

否,这是不可能的。看起来函数可能已从返回指针(Account*)更改为返回引用(Account&)

不能将0/null作为引用返回,必须更改函数的设计。可能会将帐户*恢复为返回类型


如果只在这样的If语句中使用它,可以将其更改为返回std::bool。但是当前的签名表明了其他的使用模式。

不,这是不可能的。看起来函数可能已从返回指针(Account*)更改为返回引用(Account&)

不能将0/null作为引用返回,必须更改函数的设计。可能会将帐户*恢复为返回类型


如果只在这样的If语句中使用它,可以将其更改为返回std::bool。但是当前签名表明了其他使用模式。

另一种方法(Account*除外)是返回special Account::empty对象,和/或使用Account.IsEmpty()进行测试。

另一种方法(Account*除外)是返回special Account::empty对象,和/或使用Account.IsEmpty()进行测试.

为什么不使用标准算法,如std::find\u if

编辑:查找的解释

这里是find_if算法的参考

bool-isEqual(int-id1,int-id2){
返回id1==id2;
}
void foo(){
std::列表帐户列表;
//在这里填写这个清单。
list::iterator it=std::find_if(accountList.begin(),accountList.end(),bind(isEqual,idiousearch,_1));
账户ac=*it;
}

您可能需要为bind和_1占位符添加额外的include。可能有一个用于isEqual的std谓词,您可以使用它。

为什么不使用标准算法,如std::find_if

编辑:查找的解释

这里是find_if算法的参考

bool-isEqual(int-id1,int-id2){
返回id1==id2;
}
void foo(){
std::列表帐户列表;
//在这里填写这个清单。
list::iterator it=std::find_if(accountList.begin(),accountList.end(),bind(isEqual,idiousearch,_1));
账户ac=*it;
}

您可能需要为bind和_1占位符添加额外的include。可能有一个isEqual的std谓词,您可以使用它来代替。

没有空引用。标准上说:

引用应初始化为引用有效的对象或函数。[注意:特别是,空引用在定义良好的程序中不可能存在,因为创建此类引用的唯一方法是将其绑定到通过取消引用空指针获得的“对象”,这会导致未定义的行为


没有空引用。标准规定:

引用应初始化为引用有效的对象或函数。[注:特别是,空引用在定义良好的程序中不可能存在,因为创建此类引用的唯一方法是将其绑定到通过取消引用空指针获得的“对象”,这会导致未定义的行为


你能解释一下吗?举例来说,我认为列表没有这样的算法算法不属于容器。所有标准容器都有迭代器,可以与标准算法一起使用。你能解释一下吗?举例来说,我认为列表没有这样的算法算法算法不属于容器。所有标准容器拥有可以与标准算法一起使用的迭代器。检查如何返回引用的示例您是否打算编写
list::const\u迭代器…
,因为我认为I->nID不会与
帐户一起工作。
。检查如何返回引用的示例您是否打算编写
list::const\u迭代器…
,因为我不认为我->nID将与
帐户
一起工作。为什么不能将0/null作为ref返回?我试图将null指针作为ref传递到函数中,这似乎是可以的。为什么不能将0/null作为ref返回?我试图将null指针作为ref传递到函数中,这似乎是可以的。
no match for 'operator!' in '!((Company*)this)->Company::findAccount(id)'
if(!(findAccount(id))){
            throw "hey";
          }
bool isEqual(int id1, int id2) {
   return id1 == id2;
}

void foo() {
    std::list<Account> accountList;
    // Fill this list here.

    list<Account>::iterator it = std::find_if(accountList.begin(), accountList.end(), bind(isEqual, idYouSearch, _1));

    Account ac = *it;
}