【发布时间】:2015-08-09 09:58:00
【问题描述】:
这里有一个相当简单的问题,在类 .cpp 文件中填充函数之外的向量的最佳方法是什么?目前我正在尝试以下不起作用:
std::vector<Player> midfielder(8);
midfielder.at(0) = Midfielder("Default ",0,"Midfielder");
midfielder.at(1) = Midfielder("David Armitage ",1,"Midfielder");
midfielder.at(2) = Midfielder("Tom Rockliff ",2,"Midfielder");
midfielder.at(3) = Midfielder("Gary Ablett ",3,"Midfielder");
midfielder.at(4) = Midfielder("Dyson Heppel ",4,"Midfielder");
midfielder.at(5) = Midfielder("Scott Pendlebury",5,"Midfielder");
midfielder.at(6) = Midfielder("Michael Barlow ",6,"Midfielder");
midfielder.at(7) = Midfielder("Jack Steven ",7,"Midfielder");
为了提供上下文,“Midfielder”是一个继承自“Player”类的类。
团队管理.h
#ifndef TEAMMANAGEMENT_H
#define TEAMMANAGEMENT_H
#include <vector>
#include "Player.h"
#include "Midfielder.h"
#include <string>
class TeamManagement
{
public:
TeamManagement();
void Display_Players();
};
#endif // TEAMMANAGEMENT_H
团队管理.cpp
#include <iostream>
#include <string>
#include <vector>
#include "Player.h"
#include "Midfielder.h"
#include "TeamManagement.h"
using namespace std;
TeamManagement::TeamManagement()
{
}
std::vector<Player> midfielder(8);
//errors start occurring on line below: 'midfielder' does not name a type
midfielder.at(0) = Midfielder("Default ",0,"Midfielder");
midfielder.at(1) = Midfielder("David Armitage ",1,"Midfielder");
midfielder.at(2) = Midfielder("Tom Rockliff ",2,"Midfielder");
midfielder.at(3) = Midfielder("Gary Ablett ",3,"Midfielder");
midfielder.at(4) = Midfielder("Dyson Heppel ",4,"Midfielder");
midfielder.at(5) = Midfielder("Scott Pendlebury",5,"Midfielder");
midfielder.at(6) = Midfielder("Michael Barlow ",6,"Midfielder");
midfielder.at(7) = Midfielder("Jack Steven ",7,"Midfielder");
//errors stop occurring here
void TeamManagement::Display_Players(){
cout<<"Position Name ID"<<endl;
for (int i=1;i<8;i++)
{
cout<<midfielder[i].Player_Details()<<" "<<midfielder[i].Get_player_id()<<endl;
}
}
【问题讨论】:
-
请注意,将
Midfielder添加到vector<Player>将涉及object slicing。 -
"which is not working" 你必须比这更具体。你期望什么输出?你得到了什么?程序崩溃了吗?在哪条线上?它不编译吗?信息是什么?不要让我们猜测。
-
哦,对不起,我才刚刚加入该网站。当我编译我得到错误'midfielder'没有命名类型
-
@JacksonFrisby-Smith 将相关信息放入您的问题中。并说明是哪一行导致了错误。
-
错误:'midfielder' 没有命名类型,对于我在向量中填充一个点的每一行,例如 midfielder.at(0) = Midfielder("Default ",0,"Midfielder" );对于 8 次出现的每一次,我都会得到这个。我已经编辑了问题并添加了相关类的 .h 和 .cpp 文件,因此希望这可以更清楚地说明我的错误。感谢您的帮助!