如何将对象作为函数c ++的参数
Posted
技术标签:
【中文标题】如何将对象作为函数c ++的参数【英文标题】:How do you make an object as a parameter for a function c++ 【发布时间】:2021-04-05 19:14:53 【问题描述】:我试图在这段代码中将一个对象作为我的 add() 函数的参数:
class EnterInfo
protected:
string name;
int age;
string birthmonth;
public:
EnterInfo()
EnterInfo(string n, int a, string b)
name = n;
age = a;
birthmonth = b;
;
class CourseInfo
protected:
string title;
public:
CourseInfo()
CourseInfo(string t)
title = t;
void add()
;
int main()
EnterInfo s1;
CourseInfo c1;
s1 = EnterInfo("Sand", 20, "Jan");
c1 = CourseInfo(" x Records");
我希望 add() 函数从对象“s1”中收集所有数据并将其压缩成一个数组,以便以后访问。我可以添加、删除或编辑向前移动的数据,甚至可以创建一个新对象“c2”,其中包含具有相同 s1 值(“sand”、20、“Jan”)的“y 记录”,但是,我没有想法如何在代码中实现这一点。
c1.add(s1); // assume s1 (EnterInfo): Sand 20 Jan
c1.add(s2); // assume s2 (EnterInfo): Paul 23 Aug
这是我想要使用的代码。我不知道如何使它工作。结局是这样的
c1.print();
输出:
x 条记录
1 月 20 日沙
保罗 8 月 23 日
【问题讨论】:
void add(const EnterInfo &ei)
?
std::vector<EnterInfo>
怎么样?
你如何将一个对象作为函数 c++ 的参数 -- 你在这里这样做:已经:EnterInfo(string n, int a, string b)
-- “对象”是@987654327 @.
我对你的问题有点困惑,因为将参数传递给成员函数是任何 C++ 教程中都涵盖的内容...
我想要的很简单。我想要我的 c1.add(s1);工作 -- 第一条评论已经说明了要做什么,我的评论表明您已经在代码中使用另一个函数来执行此操作。所以我们不知道你真正遇到了什么问题,因为线程的标题是“你如何将对象作为函数 c++ 的参数”。
【参考方案1】:
创建一个 EnterInfo 对象的向量并将其放入 CourceInfo 类中。下面的代码可以满足您的需要:
#include <iostream>
#include <string>
#include <vector>
using namespace std;
class EnterInfo
public:
string name;
int age;
string birthmonth;
EnterInfo()
name = "";
age = 0;
birthmonth = "";
EnterInfo(string n, int a, string b)
name = n;
age = a;
birthmonth = b;
;
class CourseInfo
protected:
string title;
vector<EnterInfo> info_vec;
public:
CourseInfo()
title = "";
CourseInfo(string t)
title = t;
void add(const EnterInfo enterInfo)
this->info_vec.push_back(enterInfo);
void print()
cout << this->title << endl;
for (const auto& it : this->info_vec)
cout << it.name << " " << it.age << " " << it.birthmonth << endl;
;
int main()
EnterInfo s1("Sand", 20, "Jan");
EnterInfo s2("Arash", 21, "Feb");
CourseInfo c1(" x Records");
c1.add(s1);
c1.add(s2);
c1.print();
旁注:1-最好在构造函数中为类的成员分配默认值。2- 我将 EnterIndo 成员的访问级别更改为公共,以便在添加功能中使用它们,但标准方法是将它们设置为私有并为它们创建 getter 和 setter。
如果您不熟悉 std::vector 和 get/setter,请研究它们。
【讨论】:
以上是关于如何将对象作为函数c ++的参数的主要内容,如果未能解决你的问题,请参考以下文章