作者BloodyDuke (个巴乐)
看板EE_DSnP
标题[讨论] vector
时间Fri Jan 16 23:15:07 2009
恩我省略了部份程式码,buffer是一个string(全域)在main中由档案输入的
buffersize也在main里决定(且是全域变数)
class Char{
friend class Bomb;
public:
Char():_numChar(0){}
void genChar();
void toScreen();
private:
int _numChar;
vector<Bomb*> _bomb;
};
class Bomb{
public:
Bomb(char);
char getCh(){return _ch;}
int& getColumn(){return _column;}
int& getRow(){return _row;}
private:
char _ch;
int _column;
int _row;
};
//main 呼叫一次,产生所有的bomb
void Char::genChar(){
for(int i=0;vector<Bomb*>::iterator it=_bomb.begin();
i<bufferSize;i++,it++)
*it=new Bomb(buffer[i]);
^^^^^^^^^^^^^^^^^^^^^^^^
//这行存取违规
}
//在main中被循环呼叫 让字母(Bomb)往下掉
void Char::toScreen(){
if(_numChar<bufferSize)
_numChar++;
int i=0;
for(vector<Bomb*>::iterator it=_bomb.begin();
i<_numChar;i++,it++){
int &col=(*it)->getColumn();
int &row=(*it)->getRow();
^^^^^^^^^^^^^^^^^^^^^^^^^
//这里也会存取违规
if((*it!=(Bomb*)DELETED)||(*it!=(Bomb*)FAIL)){
screen[col][row++]=(*it)->getCh();
}
if (((*it)->getRow()==Row)||(*it)->checkBelow()){
delete *it;
(*it)=(Bomb*)FAIL;
}
}
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.240.243
※ 编辑: BloodyDuke 来自: 140.112.240.243 (01/16 23:20)