2

次のコードでトリッキーな (少なくとも私にとっては :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;

しかし、ここでは起こらなかったので、私は混乱しています。

4

0 に答える 0