C++ 类方法返回bool,但编译器将其视为void返回
编辑 还是不知道问题出在哪里。似乎我有多个文件,但我确实没有。无论如何,我重命名了我的类.h和.cc文件,并重命名了类本身。实际上没有更改任何代码,但现在问题消失了 我想摆脱这个问题,因为我看不出它在未来对任何人都有帮助。显然这是我的一个地方性错误 我从主函数调用一个方法,并在if语句中使用布尔返回。该方法被声明为bool返回,但编译器似乎认为它是一个void返回。我尝试过将bool改为int并更改if求值,但编译器似乎仍然认为这是一个void函数。我不知道怎么了 类定义中的方法是publicC++ 类方法返回bool,但编译器将其视为void返回,c++,compiler-errors,g++,return-type,C++,Compiler Errors,G++,Return Type,编辑 还是不知道问题出在哪里。似乎我有多个文件,但我确实没有。无论如何,我重命名了我的类.h和.cc文件,并重命名了类本身。实际上没有更改任何代码,但现在问题消失了 我想摆脱这个问题,因为我看不出它在未来对任何人都有帮助。显然这是我的一个地方性错误 我从主函数调用一个方法,并在if语句中使用布尔返回。该方法被声明为bool返回,但编译器似乎认为它是一个void返回。我尝试过将bool改为int并更改if求值,但编译器似乎仍然认为这是一个void函数。我不知道怎么了 类定义中的方法是public
bool check_online();
类cc文件中的方法定义
bool Icarus::check_online()
{
char ret = 0x00;
//check if bluetooth adapter exists
if(! input)
{
mvwaddstr(feedback,1,1,"COULD NOT OPEN rfcomm0 FOR SERVICE");
wrefresh(feedback);
getch();
return(0);
}
//check if Daedalus is online
if(send_cr())
{
mvwaddstr(feedback,1,1,"Daedalus is Online ");
wrefresh(feedback);
return(1);
}
else
{
mvwaddstr(feedback,1,1,"Daedalus is Offline ");
wrefresh(feedback);
return(0);
}
}
在main中调用该方法
if(driver.check_online() == false)
{
getch();
cleanup();
}
结果误差
$ g++ -g icarus.cc main.cc -o icarus -lncurses -lpthread
main.cc: In function ‘int main()’:
main.cc:34:30: error: invalid operands of types ‘void’ and ‘bool’ to binary ‘operator==’
我理解编译器错误的含义,但我不理解为什么会抛出它。该函数显然是一个布尔返回。有什么帮助吗?向我们展示更多的上下文。向我们展示这个类的完整声明,以及所使用的变量。我看不出你所发布的内容有任何明显的错误。这可能只是一个愚蠢的错误。尝试/检查:1添加-Wall-Wextra-pendantic等标志,查看是否有任何警告提示;2确保您正在修改/保存您认为是的源文件,例如运行less icarus.cc;3确保错误是指您认为正确的线路;4确保main.cc包含与icarus.cc相同的类声明头。为什么不更改例如return1;返回真值;司机是伊卡洛斯型的吗?请给我们看一个。是SSCCE的一个示例。如您所见,它工作正常,因此您必须缩小问题范围或向我们展示更多代码。