作者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)