c++ - 私有(private)变量编译错误: Variable is Private

标签 c++ private

我有以下代码:

class Point{
private:

    double x, y;
public:
    Point(){
        this->x = 0;
        this->y = 0;

    }
//...
};

我在 double x 和 y 的私有(private)声明中遇到错误:

'double Point::y' is private

当我将代码重新排列为:

class Point{
//private:
public:

    double x, y;
    //public:
    Point(){
       this->x = 0;
       this->y = 0;

    }   
//...
};

但显然 double 不是私有(private)的。如果没有给出 private 关键字并且 double 在 public 关键字之前声明,我会得到相同的私有(private)变量错误。

我做错了什么/如何正确声明私有(private)变量? 谢谢!

我在类(class)和 double 声明中的 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();

解决了所有的错误。谢谢大家!

最佳答案

要注意的最重要的事情是,在您的 main 函数中,您尝试直接访问 xy 而不是使用访问器函数getX()getY()

另一件事是(可能由于最近的编辑)您在 Point 中的所有成员函数都是 private。直接在 c'tor 之前取消注释 //public: 行。

关于c++ - 私有(private)变量编译错误: Variable is Private,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22615160/

相关文章:

python - 在 Python 中不使用私有(private)方法和函数是不好的做法吗?

c++ - 错误消息 : with Copy constructor and Overloaded assignment operator

c++ - 无法在 uint64 上正确转换我的值?

c++ - 我的代码生成输出 "NaN"。为什么?

java - 私有(private)实例方法在运行时不受限制吗?

Android:将外部存储器上的文件夹设为私有(private)或 protected

java - 子类构造函数是否从父类(super class)构造函数继承变量?

c++ - gnu c++0x 向后兼容状态 - 我可以打开它然后继续吗?

c++ - 条件与外部获取数组元素的不同结果

C++ 提取器 (>>) 重载不读取和分配 Matrix 类