C++ 类方法返回bool,但编译器将其视为void返回

C++ 类方法返回bool,但编译器将其视为void返回,c++,compiler-errors,g++,return-type,C++,Compiler Errors,G++,Return Type,编辑 还是不知道问题出在哪里。似乎我有多个文件,但我确实没有。无论如何,我重命名了我的类.h和.cc文件,并重命名了类本身。实际上没有更改任何代码,但现在问题消失了 我想摆脱这个问题,因为我看不出它在未来对任何人都有帮助。显然这是我的一个地方性错误 我从主函数调用一个方法,并在if语句中使用布尔返回。该方法被声明为bool返回,但编译器似乎认为它是一个void返回。我尝试过将bool改为int并更改if求值,但编译器似乎仍然认为这是一个void函数。我不知道怎么了 类定义中的方法是public

编辑

还是不知道问题出在哪里。似乎我有多个文件,但我确实没有。无论如何,我重命名了我的类.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的一个示例。如您所见,它工作正常,因此您必须缩小问题范围或向我们展示更多代码。