我很难将一个类数组传递给需要对类成员进行操作的函数,我的意思是下面的代码应该解释。
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;
}
答案 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;
}