2016-11-30 227 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