2016-08-20 51 views
-3

您好我正在Xcode中的一些C++代碼,我得到這個錯誤Control may reach end of non-void function。我也使用虛幻引擎標準代碼,因此FTextint32來自哪裏。這裏是我的代碼:C++錯誤:控制可能會達到非無效功能

do { 
// get a guess from the player 
    int32 CurrentTry = BCGame.GetCurrentTry(); 
    std::cout << std::endl; 
    std::cout << "Try " << CurrentTry << ". Enter your guess: "; 
    FText Guess = ""; 
    std::getline(std::cin,Guess); 

    Status = BCGame.CheckGuessValidity(Guess); 
    switch (Status) 
    { 
    case EGuessStatus::Wrong_Length: 
     std::cout << "Please enter a " << BCGame.GetHiddenWordLength() << " letter word.\n"; 
     break; 

    case EGuessStatus::Not_Isogram: 
     std::cout << "Please enter a word without repeating letters.\n"; 
     break; 

    case EGuessStatus::Not_Lowercase: 
     std::cout << "Please enter all lowercase letters.\n"; 
     break; 

    default: 
     return Guess; 
    } 
} while (Status != EGuessStatus::OK); 
} 

請別人幫忙。

+4

錯誤應該很自我解釋。你在某處丟失了函數中的'return'語句。例如,如果循環結束會返回什麼? –

+0

與您的問題無關,但是什麼是'FText'?它只是'std :: string'的別名嗎?爲什麼有這樣的別名?它使代碼更難閱讀和理解。另外請儘量避免使用其他非標準類型,比如'int32'。如果您需要一個明確的帶符號的32位整數,則使用[''](http://en.cppreference.com/w/cpp/header/cstdint)中的標準'int32_t'。如果你不*需要一個特定大小的整數(你可能不需要),那麼就使用普通的'int'。 –

+0

由於約阿希姆提到的,你展示的代碼不足以幫助你,因爲我們需要看到整個功能。 – YakovL

回答

2

你沒有顯示你的完整功能,但顯然它被宣佈返回一些東西;並且交換機中的default路徑也返回Guess

但是,交換機中的其他三個路徑不會返回任何內容,流量會落在交換機後面,而且什麼也沒有。所以你有一個函數不會返回任何東西,但它需要返回一些東西 - 就像消息所說的那樣。

相關問題