为什么我的程序无法识别结构中的变量?

Why won't my program recognize variables from my structure?

本文关键字:变量 结构 识别 我的 程序 为什么      更新时间:2023-10-16

我正在尝试创建一个基于范围的循环,以填充我的一个类中实验室的结构向量。问题是当我写

之类的东西时
"movieInfo.Title.push_back(tempTitle);" 

它不识别"标题"是结构"电影"中的字符串。

我已经尝试使用" emplace_back",并试图直接填充向量。实验室提示是修改相同主题的矢量实验室,但使用结构向量。

我的结构如下

    struct movie 
{ 
    std::string Title, Director, Genre, Year, runningTime;
};

,它在main中定义为

vector<movie> movieInfo{};

最后,我的" for"循环写为

for (int i = 0; i < 20; i++)
{
    string tempTitle, tempDirector, tempGenre, tempYear, tempTime;
    getline(inFile, tempTitle, ',');
    movieInfo.Title.push_back(tempTitle);
    getline(inFile, tempDirector, ',');
    movieInfo.Director.push_back(tempDirector);
    getline(inFile, tempGenre, ',');
    movieInfo.Genre.push_back(tempGenre);
    getline(inFile, tempYear, ',');
    movieInfo.Year.push_back(tempYear);
    getline(inFile, tempTime);
    movieInfo.runningTime.push_back(tempTime);
}

我的错误是

"error C2039: 'Title': is not a member of     'std::vector<movie,std::allocator<_Ty>>'
1>        with
1>        [
1>            _Ty=movie
1>        ]"

这将重复所有push_back行。

这不是结构向量在C 中的工作方式。如果向量类型是一个结构,则C 不会为您的结构中的每个字段创建向量。正确的方法是:

for (int i = 0; i < 20; i++)
{
    string tempTitle, tempDirector, tempGenre, tempYear, tempTime;
    movie tempMovie = {};
    getline(inFile, tempTitle, ',');
    getline(inFile, tempDirector, ',');
    getline(inFile, tempGenre, ',');
    getline(inFile, tempYear, ',');
    getline(inFile, tempTime);
    tempMovie.Title = tempTitle;
    tempMovie.Director = tempDirector;
    // And so on...
    movieInfo.push_back(tempMovie); // Push the whole struct into the struct's vector
}

当然还有其他方法可以考虑您应该考虑的插入部分,例如Emplace_back ..