オブジェクトを作成するタスクがありますStosオブジェクトのヒープを持つオブジェクトObiektがありました。オブジェクトポインタのベクトルが奇数を返します
プログラムが動的配列をより良くサポートするために、私はVectorを使うことにしました。 実装全体が完全に実行されているようですが、戻り値は完全にオフです。
class Obiekt {
private:
int id;
public:
Obiekt::Obiekt(int i) {
id = i;
}
void Obiekt::display() {
cout << "This object has id of: " << id << endl;
}
};
class Stos {
private:
vector < Obiekt* > stos;
public:
Stos::Stos(Obiekt n) {
add(n);
}
void Stos::add(Obiekt n) {
stos.push_back(&n);
}
void Stos::display() {
cout << endl << "===HEAP DISPLAY===" << endl;
for (int i = 0; i < stos.size(); i++) {
stos[i]->display();
}
}
};
void Zad1()
{
Obiekt obj1(5);
Obiekt obj2(23);
Stos s1(obj1);
s1.add(obj2);
s1.display();
getchar();
}
と結果のビーイング:ここ コード付き例で-858993460
:
=== HEAP表示===
このオブジェクトのIDを有していますこのオブジェクトのID:9805925
私はそうではありませんcppのエキスパートであり、この問題はstos.push_back(&n)
部分に関連していると考えていますが、IDがひどく歪んだ瞬間を捉えることはできません。
これはおそらくノブの質問ですので、始めに申し訳ありません。
何か助けが素晴らしいだろう。
が働い!!ありがとう。これを回答として投稿できますか? – aln447
投稿されました:) –
最も簡単な解決策は、ベクトルをベクトル< Obiekt > stos;にすることです。 –