gpt4 book ai didi

C++ 不能在包含自定义结构的列表上使用 push_back

转载 作者:行者123 更新时间:2023-11-28 07:17:39 26 4
gpt4 key购买 nike

我们正在制作一个包含棋盘游戏信息(名称、年份、分数)的列表。我们从 .csv 文件中扫描信息,根据该信息创建一个结构,然后将该结构添加到列表中。我们一直这样做,直到文档阅读完毕。问题是列表的 push_back 方法不起作用。这是列表类的标题:注意 BoardGame 是自定义结构。 BoardGame(wstring name, int year, float score).

#pragma once
#include "GameEngine.h"
#include "BoardGame.h"
#include <list>

class BoardGameList
{
public:
BoardGameList() {}
virtual ~BoardGameList() {}
// Methods
void Load(const tstring& fileName);
// Members
private:
std::list<BoardGame> m_Games;
};

.cpp 文件。也许我列错了 list ?

#include "BoardGameList.h"
#include <fstream>

void BoardGameList::Load(const tstring& fileName)
{
tifstream file(fileName);
tstring line;

if(!file)
{
GAME_ENGINE->MessageBox(_T("Error: The file could not be found!"));
}
else
{
tstring name;
tstring year;
tstring score;

while(!(file.eof()))
{
getline(file,line);
year = line.substr(0,4);
score = line.substr(5,5);
name = line.substr(11,line.find(_T("\n")));

float numberScore = std::stof(score);
int numberYear = std::stoi(year);

m_Games.push_back(BoardGame(name,numberYear,numberScore));
}
}
}

运行程序会触发一个错误(未处理的异常),我认为这会导致我在“列表”类本身中找到以下代码。

_Unchecked_iterator _Unchecked_end()
{ // return unchecked iterator for end of mutable sequence
return (_Unchecked_iterator(this->_Myhead, this));
}

为什么我无法将内容添加到我的列表中?我尝试在构造函数中添加一些东西,以检查它是否可能需要一个元素,然后才能添加更多元素,但即便如此,使用断点仍显示无法读取内存。

非常感谢。

编辑:棋盘游戏标题

#pragma once

#include "GameEngine.h"
struct BoardGame
{
BoardGame(tstring name, int year, float score);

//Methods
tstring operator<<(BoardGame rhs);
//Members
tstring m_Name;
int m_Year;
float m_Score;
};

最佳答案

抛出什么异常?这对于调试您的问题至关重要。

如果没有这些信息,我最好的猜测是这一行:

name = line.substr(11,line.find(_T("\n")));

将在没有尾随换行符的任何行或任何长度少于 11 个字符的行上抛出异常。

关于C++ 不能在包含自定义结构的列表上使用 push_back,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19985275/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com