为什么我能够访问私有属性?它只是日食吗? (C ++)

时间:2015-10-18 20:14:24

标签: c++ eclipse

我正在用C ++做一个Klondike游戏,这是我的课程:

class Card
{
public:
    enum Kind
    {
        H   = 1,
        D   = 2,
        S   = 3,
        C   = 4
    };

    Card(Kind p_sorte, Value p_valeur);

    virtual ~Card();

private:
    Kind m_sorte;
    Value m_valeur;
};

我想知道为什么eclipse会在这种情况下提出两个私有属性:

Klondike.h - >

#include "Card.h";
class Klondike
{
    Klondike();
}

Klondike.cpp - >

Klondike::Klondike()
{
    Card c = Card(H, ACE);
    cout << c.m_sorte;//THIS SHOULDN'T BE! But eclipse Is telling its fine?!?
}

1 个答案:

答案 0 :(得分:3)

提议 他们!

但这并不意味着它们能够被使用。如果你注意到,他们左边有一个红色标志。他们这样做,所以程序员可以完整地看到班级。

enter image description here

请注意i如何用绿色标记标记,因为它是公开的,my_precious标有红色标记,因为它是私有的。

当然,当我写道:

a.my_precious;

我得到了这个:

  

错误:'int A :: my_precious'是私有的

那么,它没用吗?并不是的。考虑朋友类。在这种情况下,我很乐意在编码时看到朋友类的数据成员!

例如:

class Node 
{
    private: 
    int data;
    int key;
    // ...

    friend class BinaryTree; // class BinaryTree can now access data directly
};

取自Alex Allain