c++ - 简单运动模拟中的段错误

标签 c++ arrays class

我目前正在制作一个快速的基于文本的小型运动模拟器。到目前为止,我有 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/

相关文章:

安卓火力地堡 : Update/Add record in Nested Array data

java - Java 中的参数化类型不匹配

C++访问嵌套类的私有(private)成员

c++ - 检查内存是否在堆上?

c++ - 为什么我的 setup.py 脚本会出现此错误?

c# - c++/c#传销是怎么做出来的?

c++ - 让我难过的基本指针算术

PHP/Laravel - 从两个简单数组或结合这两个数组的关联数组创建一个对象数组

c++ - 在 C++ 中建模变量成员类型

jquery - 我正在努力让 .children() 工作