C++ 如何通过引用将数组传递给类?

C++ 如何通过引用将数组传递给类?,c++,C++,这主要是: test.Begin(static_cast<Start::Person>(player[NUM_PLAYERS]), NUM_PLAYERS); 这是从start.cpp开始的 void Start::Begin (Person *player[4], int NUM_PLAYERS) “Begin”from start.cpp以红色下划线,当我将鼠标移到它上时,错误显示: 错误:声明与“void Start::Begin(Start::Person*,int)”不

这主要是:

test.Begin(static_cast<Start::Person>(player[NUM_PLAYERS]), NUM_PLAYERS);
这是从start.cpp开始的

void Start::Begin (Person *player[4], int NUM_PLAYERS)
“Begin”from start.cpp以红色下划线,当我将鼠标移到它上时,错误显示:

错误:声明与“void Start::Begin(Start::Person*,int)”不兼容

后面是我已经为start.h显示的行的位置

// assunimg 'player' is an array
test.Begin(player, NUM_PLAYERS); // no cast
开始。h:

void Begin (Person [], int);
start.c:

void Start::Begin (Person player[], int NUM_PLAYERS)

第二个错误是因为
Begin
的定义与
Begin
的声明不匹配。您的声明正在传递一个
Person*
,而您的定义正在接受一个
Person
数组4。您可以通过将定义(在.cpp文件中)更改为:

这将符合你的定义。您可以通过以下方式调用此选项:

Start::Person players[10] = {};
// Assume 's' is an object of type Start
s.Begin(players, 10);
Start::Person players[4] = {};
// Assume 's' is an object of type Start
s.Begin(players);
Start::Person oldPlayers[6] = {};
Start::Person newPlayers[15] = {};
Start::Person mvps[3] = {};
s.Begin(oldPlayers);
s.Begin(newPlayers);
s.Begin(mvps);
这需要将索引传递给
人员
,然后传递元素数。通过将
Begin
的声明与您的定义相匹配,可以更好地实现这一点:

void Begin(Start::Person players[4]);
template <size_t size>
void Begin(const Person (&players)[size]);
现在,
Begin
将只接受一个4人的数组,您可以通过以下方式调用该数组:

Start::Person players[10] = {};
// Assume 's' is an object of type Start
s.Begin(players, 10);
Start::Person players[4] = {};
// Assume 's' is an object of type Start
s.Begin(players);
Start::Person oldPlayers[6] = {};
Start::Person newPlayers[15] = {};
Start::Person mvps[3] = {};
s.Begin(oldPlayers);
s.Begin(newPlayers);
s.Begin(mvps);
这将把数组的副本传递到
Begin
。您可以通过以下声明/定义进一步改进这一点:

void Begin(Start::Person players[4]);
template <size_t size>
void Begin(const Person (&players)[size]);

您只需要通过引用传递数组,对吗?为什么是静态演员?使用常规方法
&
,或者我不明白你的问题。你的start.h和start.cpp太不一样了。一个指针!=4个指针。在考虑main之前,先解决这个问题(数组不会与索引一起传递,尤其是与超出范围的索引一起传递)。在继续之前,我建议阅读一本好的C++书籍。这个数组永远不会被复制。