我在以下代码中发现了一个棘手的(至少对我来说: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;
但由于它没有发生在这里,我很困惑。