Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/147.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 传递向量的正确方式是什么?_C++ - Fatal编程技术网

C++ 传递向量的正确方式是什么?

C++ 传递向量的正确方式是什么?,c++,C++,我是10年级的学生,我们的老师希望我们创建一个原创项目,并使用指针 我想做的是创建成员,并能够按名称对成员进行排序并打印它们 当我运行代码时,它表示访问无效 h队 当您构建一个团队时,您有以下构造函数: Team::Team() { for(unsigned int iStaff = 0; iStaff < myStaffs.size(); iStaff++) { myStaffs[iStaff] = createStaff(iStaff); } }

我是10年级的学生,我们的老师希望我们创建一个原创项目,并使用指针

我想做的是创建成员,并能够按名称对成员进行排序并打印它们

当我运行代码时,它表示访问无效

h队
当您构建一个
团队时,您有以下构造函数:

Team::Team()
{
    for(unsigned int iStaff = 0; iStaff < myStaffs.size(); iStaff++)
    {
        myStaffs[iStaff] = createStaff(iStaff);
    }
}
您可能希望将一个数字传递给您的
团队
构造函数,以创建这么多员工:

Team::Team(int number_of_staff)
{
    for(unsigned int iStaff = 0; iStaff < number_of_staff; iStaff++)
    {
        myStaffs.push_back(createStaff(iStaff));
    }
}

int main()
{
    Command c;
    Team t(5); // t.myStaffs will contain 5 staff members
    c.printStaffs(t.getVector()); // passes vector of 5 staff
    return 0;
}
Team::Team(内部员工人数)
{
对于(无符号整数iStaff=0;iStaff<员工人数;iStaff++)
{
myStaffs.push_back(createStaff(iStaff));
}
}
int main()
{
命令c;
团队t(5);//t.mystaff将包含5名工作人员
c、 PrintStaff(t.getVector());//传递5个杆的向量
返回0;
}

您在哪里调用
命令::printstaff
?printstaff在命令上,它在哪里说访问无效,在哪一行。如果您不知道,请在调试器下运行该程序。你没有说你在哪个站台上,所以我不能告诉你如何使用汽车debugger@Jakelee嗯,既然它是空的。您没有在团队类的向量中创建任何元素。你正在迭代向量,但是向量是空的,因为它是刚刚创建的。叹气-他们从来没有在CS中教过调试classes@Jakelee然后你应该考虑接受和支持他的回答。
void Command::printStaffs(vector<Staff*>&myStaffs)
{
    for(unsigned int iStaff = 0; iStaff < myStaffs.size(); iStaff++)
    {
        std::cout << "Staff ID number: "<<  myStaffs[iStaff]->getStaId()    << std::endl
                  << "Staff Skills 1: " << *myStaffs[iStaff]->getStaSkill() << std::endl
                  << "Staff Skills 2: " << *myStaffs[iStaff]->getStaSkill() << std::endl
                  << "Staff Skills 3: " << *myStaffs[iStaff]->getStaSkill() << std::endl
                  << std::endl;
    }
}
#ifndef CommandH
#define CommandH
#include "Team.h"
#include <vector>
#include <iostream>
using std::vector;

class Command: public Team
{
    public:
         Command(){}
        ~Command(){}
        void sortVector(vector<Staff* >&vectorTemp);
        void printStaffs(vector<Staff* >&);
    private:
        vector<Staff *> vectEmployee;
};
//--------------------------------------------------------------------------
#endif
#include <iostream>
#include <conio.h>
#include "Team.h"
#include "Command.h"


int main()
{

    Team t;
    Command c;

    c.printStaffs(t.getVector());
    getch();
    return 0;
}
#ifndef STAFF_H
#define STAFF_H
#include <cstdlib>
#include <ctime>
#include <string>
using std::rand;
class Staff
{
    public:
        Staff();
        ~Staff();

        static Staff* createStaff(int); // creates staffs
        int** getStaSkill();
        int getStaId();            // returns Staff ID
        static int genRanNum(int); //Generate random number

    private:
        int *staSkill[3];
        int staId;

        //int staDeptAsigned;
};

#endif
#include "Staff.h"

Staff::Staff()
{
    *staSkill = new int[3];
}

Staff *Staff::createStaff(int s)
{
    Staff *staff = new Staff();
    staff->staId = s;
    *(staff->staSkill[0]) = genRanNum(10);
    *(staff->staSkill[1]) = genRanNum(10);
    *(staff->staSkill[2]) = genRanNum(10);
    return staff;
}

int** Staff::getStaSkill()
{
    return staSkill;
}

int Staff::getStaId()
{
    return staId;
}

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

Staff::~Staff(){}
Team::Team()
{
    for(unsigned int iStaff = 0; iStaff < myStaffs.size(); iStaff++)
    {
        myStaffs[iStaff] = createStaff(iStaff);
    }
}
int main()
{
    Command c;
    Team t; // t.myStaffs will be empty
    c.printStaffs(t.getVector()); // passes an empty vector to printStaffs
    return 0;
}
Team::Team(int number_of_staff)
{
    for(unsigned int iStaff = 0; iStaff < number_of_staff; iStaff++)
    {
        myStaffs.push_back(createStaff(iStaff));
    }
}

int main()
{
    Command c;
    Team t(5); // t.myStaffs will contain 5 staff members
    c.printStaffs(t.getVector()); // passes vector of 5 staff
    return 0;
}