C++ 结构/方法不工作
我试图在某些条件后返回结构中的值,这些值被初始化为零,但由于某些原因,当满足条件时,它们不会递增。我对C++和VS都是全新的,所以还没有掌握如何正确使用调试器。我已经检查过这些值是否确实初始化为零。我假设这个问题一定源于SubmitGuess方法的输入,它应该接受一个字符串,但不能因为某种原因而失败,因为if语句一定是不正确的。抱歉,我的代码被注释掉的代码、注释弄得千疮百孔,不完整,因此请忽略应该移动或删除的代码等。如果您能提供任何帮助,我们将不胜感激,并为发布这么多代码表示歉意,因为您认为仅向您展示代码比试图解释代码更容易 我还应该解释一下,我使用的是UE4推荐的数据类型,所以无论何时看到FString,它都只是一个与int32相同的字符串,只是一个intC++ 结构/方法不工作,c++,console-application,C++,Console Application,我试图在某些条件后返回结构中的值,这些值被初始化为零,但由于某些原因,当满足条件时,它们不会递增。我对C++和VS都是全新的,所以还没有掌握如何正确使用调试器。我已经检查过这些值是否确实初始化为零。我假设这个问题一定源于SubmitGuess方法的输入,它应该接受一个字符串,但不能因为某种原因而失败,因为if语句一定是不正确的。抱歉,我的代码被注释掉的代码、注释弄得千疮百孔,不完整,因此请忽略应该移动或删除的代码等。如果您能提供任何帮助,我们将不胜感激,并为发布这么多代码表示歉意,因为您认为仅向
#include "FISOGame.h"
#include <iostream>
using int32 = int;
//constructor
FGame::FGame()
{
//initialising the private variables so they don't return with an error
//MyCurrentTries = 1;
//MaxTries = 3;
Reset();
}
void FGame::Reset()
{
MyCurrentTries = 1;
MaxTries = 7;
const FString MyHiddenWord = "cat";
return;
}
int FGame::GetMaxTries() const
{
return MaxTries; // gets private variable from header file and returns it
}
int FGame::GetCurrentTries() const
{
return MyCurrentTries;
}
bool FGame::IsGameWon() const
{
// TODO check if game is won
return false;
}
bool FGame::CheckGuessValidity(FString)
{
// TODO check if guess makes sense
return false;
}
// recieves a valid guess, increments turn and returns count
BullCowCount FGame::SubmitGuess(FString Guess)
{
// increment the turn number
MyCurrentTries++;
// setup a return value
BullCowCount BullCowCount;
// get length of hidden word
int32 HiddenWordLength = MyHiddenWord.length();
//loop through all letters of the guess
//compare letters against hidden word
// if they match then
//increment bulls if there in the same place
// increment cows id not
FString Attempt = Guess;
for (int32 MHWChar = 0; MHWChar < HiddenWordLength; MHWChar++) {
for (int32 GChar = 0; GChar < HiddenWordLength; GChar++) {
if (Attempt[GChar] == MyHiddenWord[MHWChar]) {
if (MHWChar == GChar) {
BullCowCount.Bulls++;
}
else {
BullCowCount.Cows++;
}
}
}
}
return BullCowCount;
}
#包括“FISOGame.h”
#包括
使用int32=int;
//建造师
FGame::FGame()
{
//初始化私有变量,使其不会返回错误
//MyCurrentTrys=1;
//最大值=3;
重置();
}
void FGame::Reset()
{
MyCurrentTrys=1;
最大值=7;
const FString MyHiddenWord=“cat”;
返回;
}
int FGame::GetMaxTries()常量
{
return MaxTries;//从头文件获取私有变量并返回它
}
int FGame::GetCurrentTrys()常量
{
返回MyCurrentTries;
}
bool FGame::IsGameWon()常量
{
//TODO检查比赛是否获胜
返回false;
}
bool FGame::CheckGuessValidity(FString)
{
//要检查猜测是否有意义
返回false;
}
//接收有效猜测,增加回合数并返回计数
牛头计数FGame::SubmitGuess(FString猜测)
{
//增加匝数
mycurrent++;
//设置返回值
牛头数牛头数;
//获取隐藏单词的长度
int32 HiddenWordLength=MyHiddenWord.length();
//循环浏览猜测的所有字母
//比较字母和隐藏单词
//如果他们匹配的话
//如果在同一位置存在,则增加公牛数
//我不知道
FString尝试=猜测;
对于(int32 MHWChar=0;MHWChar
#pragma一次
#包括
使用FString=std::string;
使用int32=int;
//不要在头文件中使用名称空间
//结构与类相同,只有变量是默认的公共变量
//变量初始化为0
结构牛头计数{
int32公牛=0;
int32奶牛=0;
};
类FGame{
公众:
//通过重用类名生成构造函数
//当创建类的实例时,它会查找构造函数并运行其中的任何内容
FGame();
公众:
int32 GetMaxTrys()const;//如果不希望该方法更改任何内容,则为const
int32 GetCurrentTrys()常量;
无效重置();
bool IsGameWon()常量;
bool校验猜测有效性(FString);
//创建计数公牛和奶牛以及增加回合数的方法
牛犊数量提交(FString);
私人:
//必须初始化该值以避免错误,因为它尚未创建添加注释并重新编译以获得实际值
//它不会拾取编译器中的更改
//有关初始化,请参见构造函数
int32 MyCurrentTries;
int32最大值;
FString MyHiddenWord;
};
#包括
#包括
#包括“FISOGame.h”
使用FText=std::string;
使用int32=int;
//使用命名空间std;//不要使用名称空间,因为这样很难看到包含的内容
//为函数创建引用或调用在主函数上方或调用它的任何位置
//必须在调用之前为原始函数输入数据类型,这将使其成为引用,并首先将其加载到内存中
//与在头文件中声明函数相同
无效游戏介绍();
FText Game_Guess();
无效博弈_循环();
//让游戏实例在顶部执行此操作,这样它是全局的,并且可以被所有函数访问
//然后您可以调用这个实例(NewGameInst)并添加一个点来访问它的函数
FGame NewGameInst;//创建或实例化//制作的游戏的实例,但不知道它的数据或它所持有的东西
//应用程序运行的入口点
int main(){
游戏介绍();
游戏_循环();
系统(“暂停”);
返回0;
}
//创建用于提问的函数并在main外部声明它
//在main上方创建上述调用或引用,以保持main位于顶部
无效游戏介绍(){
//介绍游戏
constexpr int32字长度=6;
std::cout我能发现一个问题。可能不是你唯一的问题。但这里有一个解决方案
重置方法定义了一个局部变量MyHiddenWord
,当Reset
返回时,该变量将被丢弃。类FGame
的实际成员变量MyHiddenWord
从未初始化
void FGame::Reset()
{
MyCurrentTries = 1;
MaxTries = 7;
const FString MyHiddenWord = "cat"; // this is just a local variable
return;
}
我猜你的意思是:
void FGame::Reset()
{
MyCurrentTries = 1;
MaxTries = 7;
MyHiddenWord = "cat"; // actually initializes the member variable of FGame
return;
}
我能发现一个问题。可能不是你唯一的问题。但这里有一个解决方案
重置方法定义了一个局部变量MyHiddenWord
,当Reset
返回时,该变量将被丢弃。类FGame
的实际成员变量MyHiddenWord
从未初始化
void FGame::Reset()
{
MyCurrentTries = 1;
MaxTries = 7;
const FString MyHiddenWord = "cat"; // this is just a local variable
return;
}
我猜你的意思是:
void FGame::Reset()
{
MyCurrentTries = 1;
MaxTries = 7;
MyHiddenWord = "cat"; // actually initializes the member variable of FGame
return;
}
到底是什么不起作用?您有编译器错误、运行时错误、意外输出吗?也不要要求我们忽略您代码中的某些内容。请在此处演示。查看您的代码,您似乎正在创建一个n