私は、このコードを表示するだけでよいことを理解しました。 私はここにゲームという名前のクラスを持っています:レベルを含んでいます。ご覧のとおり、publicコンストラクタには、Lvl
タイプのオブジェクトの配列が必要です。コンストラクタの引数としてオブジェクト配列を渡し、渡された配列を別のコンストラクタにコピーする方法
class Game {
private:
Lvl *_levels[10];
public:
Game(Lvl levels[]){
Lvl* _levels=levels;
for(int i=0; i<10; i++){
//_levels[i]=levels[i];
cout << endl << "i : " << levels[i].get_stage(); // DOESN'T WORK !! (compiles though)
}
}
};
そしてメインに、私は次のようしている:私のようにそれを渡ししようとすると、
のでint main(){
Lvl* lvls[10]={};
for(int i=0; i<10; i++){
lvls[i]=new Lvl(0, 1, 1+i, false); // get_stage() returns the 3rd parameter
cout << lvls[i]->get_stage(); //THIS ACTUALLY WORKS AND RETURNS THE CORRECT VARIABLE!
}
Game game=Game(*lvls);
}
を、メイン機能では、Lvl
オブジェクトの配列は、完璧に動作しますが、何らかの理由でGame
オブジェクトを作成する引数、私はコンストラクタでパラメータを使用することはできません...私がget_stage()
しようとすると、乱数を返します!おそらく配列が正しく渡されなかったからでしょうか?
とにかく、これは私のこのサイトの最初の投稿です。私があなたを助けてくれることを願っています。たぶん私はそれに気をつけます:) 何かが不明な場合は、お気軽にお問い合わせください。
With'Lvl * _levelsの=レベルを使用してゲームを構築; 'でコンストラクタはメンバ変数と同じ名前のローカル変数*を定義します。 –
'Game'コンストラクタの引数が' main'変数 'lvls'や' Game :: _ levels'メンバ変数と同じ型でないなど、他の問題があります。それがあなたの現在の問題の原因です。 –
プログラマーの皆さんこんにちは、お返事ありがとうございます。 _levelsとレベルが同じ変数名であることは確かですか?私は通常、メンバー変数の先頭にアンダースコアを使用します... – user8921442