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