2017-04-12 17 views
1

我正在关注udemy.com上的一个名为“虚幻引擎开发者课程”的教程,而且我被困在C++部分的某个部分。我创建了一个具有构造函数的对象来初始化我的变量,它的工作原理当我在构造函数运行时打印变量时,我得到了预期的行为,但是当我在使用getter的程序中输出变量时,值是始终为0。请帮助=)使用前重置会员变量

FBullCow.cpp

#include "FBullCow.h" 
FBullCow::FBullCow() 
{ 
    Reset(); 
} 
void FBullCow::Reset() 
{ 
    constexpr int MAX_TRIES = 8; 
    int MyCurrentTry = 1; 
    int MyMaxTries = MAX_TRIES; 
    return; 
} 
int FBullCow::GetMaxTries() const 
{ 
    return MyMaxTries; 
} 
int FBullCow::GetCurrentTry() const 
{ 
    return MyCurrentTry; 
} 
bool FBullCow::IsGameWon() const 
{ 
    return false; 
} 
bool FBullCow::CheckGuessValidity(std::string) const 
{ 
    return false; 
} 

FBullCow.h

#pragma once 
#include <string> 
class FBullCow 
{ 
public: 
    FBullCow(); 
    void Reset(); 
    int GetMaxTries() const; 
    int GetCurrentTry() const; 
    bool IsGameWon() const; 
    bool CheckGuessValidity(std::string) const; 
private: 
    int MyCurrentTry; 
    int MyMaxTries; 
}; 

的main.cpp

#include <iostream> 
#include <string> 
#include "FBullCow.h" 
void intro(); 
std::string GetGuess(); 
void PlayGame(); 
bool AskToPlayAgain(); 
FBullCow BCGame; 
int main() 
{ 
    //Introduce the game 
    intro(); 
    do 
    { 
     //Play the game 
     PlayGame(); 
    } 
    while (AskToPlayAgain() == true); 
    return 0; 
} 
void intro() 
{ 
    //Introduce the game 
    constexpr int WORD_LENGTH = 5; 
    std::cout << "Welcome to my bull cow game\n"; 
    std::cout << "Can you gues the " << WORD_LENGTH << " letter isogram I'm thinking of?\n"; 
    return; 
} 
std::string GetGuess() 
{ 
    std::string Guess = ""; 
    std::cout << "You are on try " << BCGame.GetCurrentTry() << std::endl; 
    std::cout << "Enter your guess: "; 
    std::getline(std::cin, Guess); 
    return Guess; 
} 
void PlayGame() 
{ 
    std::cout << BCGame.GetMaxTries() << std::endl; 
    std::cout << BCGame.GetCurrentTry() << std::endl; 
    int MaxTries = BCGame.GetMaxTries(); 
    //Loop for the number of turns asking for guesses 
    for(int i = 0; i < MaxTries; i++) 
    { 
     std::string Guess = GetGuess(); 
     //Get a guess from the player 
     //Repeat guess back to them 
     std::cout << "Your guess was " << Guess << std::endl; 
    } 
} 
bool AskToPlayAgain() 
{ 
    std::cout << "Do you want to play again? Y or N: "; 
    std::string response = ""; 
    std::getline(std::cin, response); 
    if(response[0] == 'y' || response[0] == 'Y') 
    { 
     return true; 
    } 
    return false; 
} 

回答

1

在该方法中:

void FBullCow::Reset() 
{ 
    constexpr int MAX_TRIES = 8; 
    int MyCurrentTry = 1; 
    int MyMaxTries = MAX_TRIES; 
    return; 
} 

这里要设置局部变量,而不是成员变量。只需删除int部分:

void FBullCow::Reset() 
{ 
    constexpr int MAX_TRIES = 8; 
    MyCurrentTry = 1; 
    MyMaxTries = MAX_TRIES; 
    return; 
} 

它应该现在工作。请注意,你的编译器应该已经告诉你有关被初始化但未被使用的变量。