如何将对象向量从类返回到 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<q1studentType> 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的主要内容,如果未能解决你的问题,请参考以下文章