gpt4 book ai didi

c++ - 具有一个特定函数的奇怪类型转换

转载 作者:行者123 更新时间:2023-11-28 05:36:03 26 4
gpt4 key购买 nike

我对面向对象的代码比较陌生,所以我可能遗漏了一些简单的东西。下面的代码主要是另一个文件中函数原型(prototype)的框架代码。问题出在 Light::setMessage() 函数上。照原样,我在编译时遇到了这个错误。

metaphase.cpp:25:27: error: cannot convert ‘Light::checkMessageValid’ from type ‘bool (Light::)()’ to type ‘bool’

因为我是新来的类,如果我做错了什么我不会感到惊讶,但如果我删除 if(checkMessageValid) 并保留其他它编译。我知道这些函数中没有任何内容,但我不明白为什么编译器没有完全相同地对待它们。

#include "lighting.hpp"

bool Light::checkMessageValid( void )
{
return false;
}

bool Light::_setChannel( unsigned int ch )
{
return false;
}

bool Light::_setCommand( unsigned int co )
{
return false;
}

bool Light::_setData( unsigned int d )
{
return false;
}

bool Light::setMessage( unsigned int ch, unsigned int co, unsigned int d )
{
if( checkMessageValid )
{
if( !_setChannel( ch ) )
return false;
if( !_setCommand( co ) )
return false;
if( !_setData( d ) )
return false;
}
return false;
}

最佳答案

正如您所说,checkMessageValid 是一个函数,而不是一个变量。必须调用函数,checkMessageValid()

该错误基本上表明 checkMessageValid(类型为 bool (Light::)())无法转换为 bool . if 语句需要一个 bool(进行比较),因此编译器尝试将函数类型转换为 bool,但失败了,因为没有这样的转换。

关于c++ - 具有一个特定函数的奇怪类型转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38288393/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com