1
class Point
{
  private:
    int X, Y;  
  public:
    static const Point Origin;
    static const Point OneZero;
    static const Point ZeroOne;
};

ポイント Origin にアクセスするにはどうすればよいですか?

4

2 に答える 2

3

静的な場合は、次のように記述します。

Point::Origin

またはより完全な例:

namespace Someplace {
int fun() {
  return Point::Origin.X;
}
}

クラスのスコープ内では修飾Point::は必要ありませんが、単純にOrigin.

于 2013-02-28T16:18:08.073 に答える
1

次のように、アクセサー (「ゲッター」) をクラスに追加します。

class Point
{
  private:
    int X, Y;  
  public:
    static const Point Origin;
    static const Point OneZero;
    static const Point ZeroOne;

    int getX() {return X;}
    int getY() {return Y;}
};

次に、次のように Point の内容にアクセスできます。

int originX = Origin.getX();

またはこのように:

Point myPoint;
int pointX = myPoint.getX();

また、クラス Point 内にクラス Point の静的インスタンスがあることも混乱を招きます。以下は、あなたがやろうとしていることかもしれません:

class Point
{
  public:
    // Added a constructor that takes two arguments
    Point(int pointX, int pointY) {X = pointX; Y = pointY;}

    int getX() {return X;}
    int getY() {return Y;}
  private:
    int X, Y;  
};

int main()
{
  const Point Origin(0,0);
  const Point OneZero(1,0);
  const Point ZeroOne(0,1);

  int originX = Origin.getX();
};
于 2013-02-28T16:20:16.203 に答える