2016-11-30 203 views
-6

我想在Visual Studio社区2015中创建一个程序来玩井字游戏。听起来很简单,不是很多。 无论如何,我正在使用函数[bool playerCheck()]为函数进行切换,以检查用户选择的空间是否已被占用。操作数类型不兼容(“布尔(*)()”和“布尔”)

void checkInput() 
{ 
    if (playerCheck == true) 

Visual Studio中给出了 “==” 下的波浪线和给出了消息

操作数类型不兼容( “布尔(*)()” 和 “布尔”)。

不确定语法应该如何将函数输出与常量进行比较。

+2

阅读教程,*任何*教程? – Voo

+1

'playerCheck()'是你如何调用'bool playerCheck(){/ * ... * /}' – crashmstr

+0

'if(playerCheck()== true)'或者更好'if(playerCheck())' – pm100

回答

1

playerCheck是需要为了得到布尔结果被调用的函数,即:

if (playerCheck() == true) 

bool (*)()是一个函数,它不带任何参数,并返回boolean值的类型。

playerCheck == true是试图将函数指针有一个布尔值,这导致其不言自明的编译错误比较。

playerCheck() == true调用函数并将结果(布尔类型)与布尔值进行比较。


注意if (x == true)一般可以缩写为if (x),所以你可以只写

if (playerCheck()) 
+0

想知道为什么downvote--这是正确的(除了没有指出==真是多余的) – pm100

+1

@ Pm100因为回答这样可怕的问题(是的,在阅读教程的前10行之前是一个好主意!)得到平凡的代表鼓励这些导致螺旋下降的问题。 – Voo

+1

你认为回答不好的问题试图获得代表?似乎人们只是试图提供帮助。我一直这样做。有时,语言教程并不真正涵盖一些超基本的东西,有人指出答案有很大帮助。当我第一次了解Fortran(很久以前)时,他们谈论了卡片上的布局,这些卡片上面有评论等。我真的很困惑,因为它有多么有限,直到有人指出*你可以有多张卡* – pm100