我正在关注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;
}
答案 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;
}
现在应该可以了。请注意,您的编译器应该已经警告过您已初始化但未使用的变量。