私はPIMPLイディオムと一般的なC++について学んでいます。値を印刷するときにガベージ値が表示されるのはなぜですか?
私は、PIMPLスタイルのインターフェイスを持つクラスを持っています。これは、int値を7に設定します。しかし、印刷するときにガベージ値が得られます。
コード
Test.cppの
#include <iostream>
#include "Test.h"
struct Foo::Bar
{
int value;
};
Foo::Foo()
{
Bar tempBar;
myBar = &tempBar;
myBar->value = 7;
}
void Foo::printValue()
{
std::cout << "Value = " << myBar->value << std::endl;
}
int main()
{
Foo myFoo;
myFoo.printValue();
return 0;
}
TEST.H
class Foo
{
private:
struct Bar;
Bar* myBar;
public:
Foo();
void printValue();
//~Foo();
};
出力
値= 2147120498
それとも、 'Foo'クラスの'バーmyBar'に '*バーmyBar'を変更し、' myBar.value'の代わりに使用します.cppファイル内
体は可能性があり'myBar-> value'です。 –
ああ、私は何をしたのか分かります。実際にスタックにオブジェクトを置こうとしていました。ヒープを必要とせずに構造化する方法はありますか? – Rethipher
スタックとヒープのみがあり、他には何もありません。しかし、 'Bar myBar'を' Foo'クラスのメンバにすることができます。 'new'を使って割り当てることができます。 –