これでエラーが出ないのが不思議なんですが
enum a{
C_TYPE_PLAYER,
B_TYPE_PLAYER,
D_TYPE_PLAYER,
};
Character* character;
character = new Character[IMAGE_MAX];
delete[] character;
character[C_TYPE_PLAYER].initialize(~);
この
character[C_TYPE_PLAYER]->initialize(~);
この部分を アロー演算子でアクセス出来ないのはなぜでしょうか?
オブジェクトの動的確保について
Re: オブジェクトの動的確保について
C++の場合、character[C_TYPE_PLAYER]はCharacter型であってポインタではなく、かつCharacter型でアロー演算子がオーバーロードされていないからでしょう。
characterが指す配列は既にdeleteされているからです。
deleteされたものにアクセスしてはいけません。
詳しく調べてはいませんが、多分未定義でしょう。
characterが指す配列は既にdeleteされているからです。
deleteされたものにアクセスしてはいけません。
本当に不思議ですね。うん さんが書きました:これでエラーが出ないのが不思議なんですが
詳しく調べてはいませんが、多分未定義でしょう。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: オブジェクトの動的確保について
回答ありがどうございます。
もうすこし詳しく書くと
//グローバル
Character* charcter;
int main(){
while(ゲームループ){
character = new Character[IMAGE_MAX] ;
switch( game_mode){
case 1:
maingame();
break;
}
}
delete[] character;
}
int maingame(){
if( (character[T_TYOE_TYTLE].initialize()) == false){
return -1;
}
}
こんな感じです ここで
character[T_TYOE_TYTLE].initialize() が アロー演算子でアクセス出来ないんです
指す必要がないからでしょうか?
もうすこし詳しく書くと
//グローバル
Character* charcter;
int main(){
while(ゲームループ){
character = new Character[IMAGE_MAX] ;
switch( game_mode){
case 1:
maingame();
break;
}
}
delete[] character;
}
int maingame(){
if( (character[T_TYOE_TYTLE].initialize()) == false){
return -1;
}
}
こんな感じです ここで
character[T_TYOE_TYTLE].initialize() が アロー演算子でアクセス出来ないんです
指す必要がないからでしょうか?
Re: オブジェクトの動的確保について
character[C_TYPE_PLAYER]はCharacter型であってポインタではなく、かつCharacter型でアロー演算子がオーバーロードされていないからでしょう。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)