次のように、ポインター メンバーを含むクラスを作成し、クラスのインスタンスを構築するときにそのポインターを初期化します。
#include "stdafx.h"
#include <iostream>
class MyClass {
public:
MyClass(int x): p(&x){}
int getValueOfp()
{
return *p;
}
private:
int* p;
};
int _tmain(int argc, _TCHAR* argv[])
{
int x=5;
MyClass obj1(x);
std::cout<<obj1.getValueOfp();
return 0;
}
問題は、出力を呼び出しgetValueOf()
たときに、指しているはずの変数の値ではないことですp
(この場合、5 を指しているはずなのでx
)。私はこの問題に対する可能な答えを求めてウェブを検索しましたが、運が悪かったのですが、ここで何が間違っているのか教えてもらえますか? (ご覧のとおり、私は Visual Studio Express で作業しています)。