Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/140.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 结构/方法不工作_C++_Console Application - Fatal编程技术网

C++ 结构/方法不工作

C++ 结构/方法不工作,c++,console-application,C++,Console Application,我试图在某些条件后返回结构中的值,这些值被初始化为零,但由于某些原因,当满足条件时,它们不会递增。我对C++和VS都是全新的,所以还没有掌握如何正确使用调试器。我已经检查过这些值是否确实初始化为零。我假设这个问题一定源于SubmitGuess方法的输入,它应该接受一个字符串,但不能因为某种原因而失败,因为if语句一定是不正确的。抱歉,我的代码被注释掉的代码、注释弄得千疮百孔,不完整,因此请忽略应该移动或删除的代码等。如果您能提供任何帮助,我们将不胜感激,并为发布这么多代码表示歉意,因为您认为仅向

我试图在某些条件后返回结构中的值,这些值被初始化为零,但由于某些原因,当满足条件时,它们不会递增。我对C++和VS都是全新的,所以还没有掌握如何正确使用调试器。我已经检查过这些值是否确实初始化为零。我假设这个问题一定源于SubmitGuess方法的输入,它应该接受一个字符串,但不能因为某种原因而失败,因为if语句一定是不正确的。抱歉,我的代码被注释掉的代码、注释弄得千疮百孔,不完整,因此请忽略应该移动或删除的代码等。如果您能提供任何帮助,我们将不胜感激,并为发布这么多代码表示歉意,因为您认为仅向您展示代码比试图解释代码更容易

我还应该解释一下,我使用的是UE4推荐的数据类型,所以无论何时看到FString,它都只是一个与int32相同的字符串,只是一个int

#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