如何将对象作为函数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 ++的参数的主要内容,如果未能解决你的问题,请参考以下文章

C ++,将对象作为参数传递给另一个对象构造函数

如何通过原始指针将闭包作为参数传递给 C 函数?

如何将constexpr作为函数参数传递c ++ [重复]

如何将 C# 对象作为参数传递给 Javascript 函数

如何将指针作为参数传递给 COM 对象中的函数?

在java中如何将emun枚举类型作为参数传入函数中?