如何将对象向量从类返回到 main.cpp

Posted

技术标签:

【中文标题】如何将对象向量从类返回到 main.cpp【英文标题】:How to return a vector of objects from class to main.cpp 【发布时间】:2019-04-15 11:14:44 【问题描述】:

我有一个学生类,它具有从文本文件读取学生对象并将它们添加到学生向量的函数。这没关系,而且效果很好。我的 student.cpp 文件中有这个功能。 (我认为这是正确的)。

如何将此向量从 student.cpp 返回到我可以访问元素、编辑它们和排序等的主目录。

student.cpp

#include "pch.h"
#include "q1studentType.h"


q1studentType::q1studentType(std::string sFN, std::string sLN, std::string ts)

    studentFName = sFN;
    studentLName = sLN;
    testScore = ts;


void q1studentType::printStudent()

    std::cout << studentFName << " " << studentLName << "\t(" << testScore << " / "<< grade << ")" << std::endl;



std::vector<q1studentType>  q1studentType::initStudents() 
    std::vector<q1studentType> students;
    std::ifstream inFile("students.txt");

    for (q1studentType i;
        getline(inFile, i.studentFName, ',')
        && getline(inFile, i.studentLName, ',')
        && getline(inFile, i.testScore)
        ; )
    
        students.push_back(i);
        i.printStudent();
    

    return students;

主要

int main() 

    //What I want to say in my head
    std::vector<q1studentType> students = q1studentType.initStudents();



我是否以正确的方式处理这件事?提前致谢

【问题讨论】:

乍一看您的代码看起来是正确的。有什么问题? 您可以返回副本或参考。您可以使用引用编辑原始值,但您必须注意对象的生命周期。 将 initStudents 设为静态 顺便说一句,你可以写 auto students = q1studentType.initStudents(); 而不是 std::vector&lt;q1studentType&gt; students = q1studentType.initStudents(); 请包含minimal reproducible example 和错误消息(如果有)。目前尚不清楚是什么问题/问题 【参考方案1】:

你的代码有问题:

在声明中将 initStudents() 设为 public 和 static(通常在头文件 q1studentType.h 中)

public: static std::vector<q1studentType>  q1studentType::initStudents();

.cpp 中的代码在我看来没问题。

并在 main.cpp 中正确调用它

auto students = q1studentType::initStudents();

【讨论】:

您好,感谢您的回答。当我尝试添加静态时,出现错误“此处可能未指定存储类” @Cormac 你需要将其添加到.h文件中的代码中,而不是.cpp文件中 @Cormac 更新了答案,使其正确声明 @SeverinPappadeux 太好了。感谢您花时间回答并格式化代码框中的代码。 @Cormac 不客气,祝你上课好运

以上是关于如何将对象向量从类返回到 main.cpp的主要内容,如果未能解决你的问题,请参考以下文章

无法从 .hpp 文件中的类获取返回数据

目标 C:从类方法返回一个对象数组

从类线程返回到 MainActivity 的 IPC 广播?

vector<wstring> 作为返回值和参数

如何从类方法返回枚举元素?

如何从类函数返回数组