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);
}

改变“阿尔法阿尔法(贝塔(d));” 与以下之一,将使代码编译:

  • 阿尔法阿尔法(贝塔(5));
  • 阿尔法阿尔法(贝塔((双)d));
  • 阿尔法阿尔法{Beta{d}};//对c++11有效

我得到的编译器错误是:“在'alpha'中请求成员'value',它是非类类型'Alpha(Beta)'”

在以下情况下,我预计会出现这样的错误:

Alpha a();
a.value;

但由于它没有发生在这里,我很困惑。

4

0 回答 0