我正在开发一个项目,我需要将这个数组动态存储在内存中。但是我遇到了seg的问题。故障。我(尝试?)创建一个Player类数组的新实例。我的程序涉及遍历单词horse的数组。我知道我的算法正在运行(从之前的测试中)我只是在理解指针和实例/语法时遇到了麻烦。
所有这些都是在头文件中声明为
的字符数组char HORSE[5];
到目前为止,这是我的代码,我只包含了为此项目修复的需求:
这是Player类的构造函数。
Player::Player(int n = 0){
num = n ;
index=-1;
Player * HORSE[5];
HORSE[0] = new Player('H');
HORSE[1] = new Player('O');
HORSE[2] = new Player('R');
HORSE[3] = new Player('S');
HORSE[4] = new Player('E');
}
这是我需要使用数组
的方法char Player::add(){
if(index==5)
return 0;
else {
word[++index]=this->HORSE[index];
return word[index];
}
}
答案 0 :(得分:-1)
HORSE仅存在于构造函数中。一旦构造函数完成,它就会被丢弃。你需要成员变量。索引相同
class Player
{
private:
Player * horse_ [5];
int index_;
....
}
注意我已将HORSE更改为horse_。通常,所有大写的东西都是常量。作为一个好习惯,你应该为你的成员变量命名约定。
现在你可以去
了char Player::add(){
if(index_==5)
return 0;
else {
word[++index_]=this->horse_[index_];
return word[index_];
}
}
顺便说一句,在c ++中使用std :: vector而不是数组。他们更好
哦,是的 - 并取出你在其他地方的随机HORSE声明。你把它放在那里因为你的代码不会编译,否则它完全错误
正如其他人所指出的那样 - 这里还有很多其他问题,但这可以解决你的基本阻塞问题
例如
word[++index_]=this->horse_[index_];
应该是
++index_;
word[index_] = horse_[index_];
我的赌注是这个词也是错的,但是你没有表明它是如何定义的