将一组类传递给函数

时间:2015-06-09 18:53:58

标签: c++ pointers

我很难将一个类数组传递给需要对类成员进行操作的函数,我的意思是下面的代码应该解释。

class Person {
  public:
    char szName[16];
};


void UpdatePeople(Person* list) //<- this is the problem.
{
    for (int i=0;i<10;i++)
    {
        sprintf(&list[i]->szName, "whatever");
    }
}

bool main()
{
    Person PeopleList[10];
    UpdatePeople(&PeopleList);

    return true;
}

1 个答案:

答案 0 :(得分:2)

您不需要&可以直接传递数组

UpdatePeople(PeopleList);

在此次通话中,PeopleList将衰减为Person*

然后在UpdatePeople函数中,您可以将其用作

for (int i=0;i<10;i++)
{
    sprintf(list[i].szName, "whatever");
}

但是,我建议使用C ++标准库

#include <iostream>
#include <string>
#include <vector>

class Person{
public:
    std::string szName;
};

void UpdatePeople(std::vector<Person>& people)
{
    for (auto& person : people)
    {
        std::cin >> person.szName;
    }
}

bool main()
{
    std::vector<Person> peopleList(10);
    UpdatePeople(peopleList);
    return true;
}