成员变量在使用前重置

时间:2017-04-12 03:19:07

标签: c++

我正在关注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 个答案:

答案 0 :(得分: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;
}

现在应该可以了。请注意,您的编译器应该已经警告过您已初始化但未使用的变量。