次のコードでトリッキーな (少なくとも私にとっては :D) 問題を見つけました。
class Beta
{
public:
Beta(double d)
{
value = d;
}
double getValue() const
{
return value;
}
private:
double value;
};
class Alpha
{
public:
Alpha(const Beta& beta)
{
value = beta.getValue();
}
Alpha(double d)
{
Alpha alpha(Beta(d));
value = alpha.value;
}
private:
double value;
};
int main()
{
Alpha(5);
}
「Alpha alpha(Beta(d));」の変更 次のいずれかを使用すると、コードがコンパイルされます。
- アルファ alpha(ベータ(5));
- アルファ alpha(Beta((double)d));
- アルファアルファ{ベータ{d}}; //c++11 で有効
私が得るコンパイラ エラーは次のとおりです。
次のような場合に、このようなエラーが発生することが予想されます。
Alpha a();
a.value;
しかし、ここでは起こらなかったので、私は混乱しています。