如何在C ++中传递vector作为引用?

时间:2015-10-12 19:58:57

标签: c++

我想通过我的矢量" myStaffs"从Team Class引用到Manage Class,因为我想操纵人员的数据并对其进行排序。如何通过引用传递它?

标题员工

    #ifndef STAFF_H
    #define STAFF_H
    #include <vector>
    #include <cstdlib>
    #include <ctime>
    #include <string>


    class Staff
    {
        public:
            Staff();
            Staff(int, int, int, int);
            ~Staff();

            static int genRanNum(int);
            static Staff* createStaff(int);
            const int getSize();

        private:
            int staSkills1,staSkills2,staSkills3;
            int staId;

            //int staDeptAsigned;
            //std::string staName;
    };

    #endif

CPP员工

#include "Staff.h"
#include <iostream>
using namespace std;

Staff::Staff():
    staId(0),
    staSkills1(0),
    staSkills2(0),
    staSkills3(0)
{
}

Staff::Staff(int id, int s1, int s2, int s3):
    staId(id),
    staSkills1(s1),
    staSkills2(s2),
    staSkills3(s3)
{
}
Staff *Staff::createStaff(int s)
{
    Staff *staff = new Staff();
    staff->staId = s;
    staff->staSkills1 = genRanNum(10);
    staff->staSkills2 = genRanNum(10);
    staff->staSkills3 = genRanNum(10);

    return staff;
}
int Staff::genRanNum(int num)
{
    return 1+(rand()%num);
}

Staff::~Staff()
{
}

标题小组

#ifndef TEAM_H
#define TEAM_H
#include "Staff.h"
#include <vector>
#include <iostream>
using std::vector;

class Team: public Staff
{
    public:
        Team();
        ~Team();

    private:
        vector<Staff *> myStaffs;
};

#endif // TEAM_H

CPP小组

#include "Team.h"

const int SIZE = 30;
Team::Team():
    myStaffs(SIZE)
{
    for(int iStaff = 0; iStaff <= SIZE; iStaff++)
    {
        myStaffs[iStaff] = createStaff(iStaff);
    }
}

Team::~Team()
{     
}

标题管理

#ifndef OPTIONS_H
#define OPTIONS_H
#include "Team.h"
#include <vector>
#include <iostream>
using std::vector;


class Manage
{
    public:
        Manage();
        ~Manage();



    private:
        // vector 
};

CPP管理

#include "Manage.h"

Manage::Manage()
{
}

Manage::~Manage()
{
}

#endif 

2 个答案:

答案 0 :(得分:3)

就像

一样简单
#include <vector>

void myVectorManglingFun(std::vector<Staff *> &myStaff) //notice the &
{
    //do something here
}

如果您不需要修改向量,则始终使用const引用。

void myVectorReadingFun(const std::vector<Staff *> &myStaff)

答案 1 :(得分:3)

通过引用

传递任何其他对象时,传递它很简单
int sortEmployee(std::vect<Staff *> &staffList> {
 // ... code to sort Employee
}

你可以像下面那样打电话给

vector<Staff *> myStaffs
result = sortEmployee(myStaffs);