我目前正在制作一个快速的基于文本的小型运动模拟器。到目前为止,我有 2 个类(class),Team 和 Player。我尝试在一个团队中制作一系列玩家,也就是花名册。 (不知道该怎么做)。我尝试制作一名球员,然后将他分配到花名册数组的第一位。它编译得很好,但是当我运行程序时,我收到“段错误”错误,我相信这与我造成的内存错误有关。代码可能不是最好的,如果我的代码不是最优化的,我很抱歉。如果您对我如何解决此问题有任何建议,请告诉我。谢谢。
#include <iostream>
#include <string>
#include <stdio.h>
#include <vector>
using namespace std;
class Player {
public:
string playerName;
string playerAge;
string position;
} players;
class Team: public Player {
public:
string name;
Player roster[];
} teams;
void teamCrocovia() {
Team crocovia;
crocovia.name = "ComArch Crocovia";
Player cro1;
crocovia.roster[0] = cro1; // This is the segmentation fault.
}
int main() {
teamCrocovia();
return 0;
}
最佳答案
你不能指望这个:
Player roster[]; // this is a zero-sized array
成为一个可变大小的数组(在 C++ 中没有这样的东西)并添加如下元素:
crocovia.roster[0] // out of bounds access
使用std::vector
相反:
std::vector<Player> roster; // in Team
crocovia.roster.push_back(cro1); // add player
此外,我不明白为什么 Team
继承自 Player
并且您立即创建了每个类的复数名称的对象,这些名称甚至都没有被使用。
关于c++ - 简单运动模拟中的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34212207/