【发布时间】:2014-03-24 16:30:17
【问题描述】:
我有以下代码:
class Point{
private:
double x, y;
public:
Point(){
this->x = 0;
this->y = 0;
}
//...
};
我在双精度 x 和 y 的私有声明中遇到错误:
'double Point::y' is private
当我将代码重新排列为:
class Point{
//private:
public:
double x, y;
//public:
Point(){
this->x = 0;
this->y = 0;
}
//...
};
但显然 double 不是私有的。如果没有给出 private 关键字并且在 public 关键字之前声明双精度,我会得到相同的私有变量错误。
我做错了什么/如何正确声明私有变量? 谢谢!
我在类中和双打声明中都有 Eclipse 中的错误制造者:(我在代码中放置了一个 X,因为我无法发布屏幕截图)
class Point{
private:
//public:
X double x, y;
X Point(): x{0},y{0}{
}
已解决:感谢 Dieter Lücking 指出,在我的示例中,当我提供完整的代码示例时,我忘记取消注释 public 关键字。在我编写的代码中更进一步:
cout << "\nPoint sum: " << e.x + e.getY();
奇怪的是,这导致错误同时出现在 cout 行和声明行上,这就是造成我困惑的原因。修复 cout 线:
cout << "\nPoint sum: " << e.x + e.getY();
解决了所有的错误。谢谢大家!
【问题讨论】:
-
我建议你开始使用构造函数初始化列表。
-
你的意思是?:
Point(): x{0},y{0}{ } -
我不相信您在声明时会收到错误消息。您的代码将编译得很好。检查您未在此处发布的代码。在您访问 x 和 y 的地方,这就是您遇到问题的地方。
-
@iceburg,是的,我就是这个意思。
-
在完整的代码中都是私有的