嗨,我还是C ++的新手,我被卡住了:(如何将一个类对象数组传递给一个函数? 我认为你必须在函数原型中声明数组类型和名称,因此我写了“int _displayinfo(class details user []);”并且在函数调用中你必须编写数组名和数组[] 。
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
int _input();
int _displayinfo(class details user[]);
class details
{
public:
string name;
int age;
};
int _input()
{
class details user[3];
for (int i = 0; i < 2; i++)
{
cout << "Enter the name:";
cin >> user[i].name;
cout << "Enter age:";
cin >> user[i].age;
}
return 0;
}
int _displayinfo(details user[])
{
for (int i = 0; i < 2; i++)
{
cout << "User " << i << user[i].name << endl;
}
return 0;
}
int _tmain(int argc, _TCHAR* argv[])
{
_input();
_displayinfo(details user[]);
return 0;
}
答案 0 :(得分:0)
这似乎可能是你的问题
_input();
_displayinfo(details user[]);
此时用户阵列不存在。如果是,则只传递名称,例如
_displayinfo(user);
答案 1 :(得分:0)
一个简单的方法是:
int _displayinfo(const details* user, int size)
int _displayinfo(details user[])
衰减为int _displayinfo(details* user)
另一种方法是写:
int _displayinfo(const details (&user)[3])
另一种方法是使用std::vector<details>
或std::array<details, 3>
所以写:
int _displayinfo(const std::vector<details>& user)
int _displayinfo(const std::array<details, 3>& user)
注意:我添加const
,因为您不修改_displayinfo
内的数组。
答案 2 :(得分:0)
用英语评论你的坏代码是太久了,所以如果我只是简单地重写它会更好。我不检查输入是否有效。 (没有测试)
#include "stdafx.h"
#include <iostream>
#include <string>
struct details
{
std::string name;
int age;
};
void input( details user[], size_t n )
{
for ( size_t i = 0; i < n; i++ )
{
std::cout << "Enter the name: ";
std::cin >> user[i].name;
std::cout << "Enter age: ";
std::cin >> user[i].age;
std::cout << std::endl;
}
}
void displayinfo( const details user[], size_t n )
{
for ( size_t i = 0; i < n; i++ )
{
std::cout << "User " << i << ": " << user[i].name
<< " is " << user[i].age << " years old." << std::endl;
}
}
int _tmain(int argc, _TCHAR* argv[])
{
const size_t N = 3;
details user[N];
input( user, N );
displayinfo( user, N );
return 0;
}