私がこの構造体を持っているとしましょう:
typedef struct Foo {
int a;
int b;
int c;
} Foo;
ここで、Foo にメモリを割り当てる初期化関数を作成し、次のように値をオブジェクトにプリセットします。
void initializeFoo(Foo *foo) {
foo = (Foo*)malloc(sizeof(Foo));
foo->a=0;
foo->b=15;
foo->c=0;
}
Foo の上に、Display という C++ クラスを作成したとしましょう。これにより、画面に Foo を表示できます。
class Display {
public:
Display();
private:
Foo* foo;
}
Display コンストラクター内で initializeFoo(foo) を使用して foo の値を初期化しますが、foo に設定したプリセット値がありません。
メモリ割り当ての問題である可能性があると思いました。Display が C++ の「new」で適切に割り当てられていることを確認しました。しかし、私は一日中頭を悩ませてきました。
機能しない唯一の理由は、initializeFoo() でこれらの値を設定したためだと思われます。しかし、それは私には意味がありません。
ここで何が起こっているのかについて、他の誰かがより良い意見を持っていますか?