如何将类对象数组传递给函数?

时间:2014-01-09 15:47:21

标签: c++ arrays

嗨,我还是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;
} 

3 个答案:

答案 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;
}