用C ++编写一个简单的类

时间:2011-03-23 20:10:25

标签: c++ class private

我收到一条错误消息,说我无法访问私人会员x和y。如何编写方法getX()和getY()以便它们可以看到x和y?感谢。

#include <iostream>
#include <string>
using namespace std;

class Point {
public:
    Point(int x, int y);
    Point();
    int getX();
    int getY();

private:
    int x, y;
};


int Point::getX() {
    return x;
}

int Point::getY() {
    return y;
}

void main () {

    Point p(5,5);
    Point g;

    cout << p.x << endl;
    cout << g.y;
    string s;
    cin >> s;

}

6 个答案:

答案 0 :(得分:7)

嗯,你已经 写了getXgetY,你只需要使用它们:

cout << p.getX() << endl;
cout << g.getY();

请注意,由于getX()getY()不会修改您的课程,因此它们应为const

class Point {
public:
    // ...

    int getX() const;
    int getY() const;

    // ...
};

// ...

int Point::getX() const {
    return x;
}

int Point::getY() const {
    return y;
}

// ...

答案 1 :(得分:2)

不应该是

cout << p.getX() << endl;
cout << g.getY();

答案 2 :(得分:1)

您无法访问x和y,因为它们是私有的。但是,您已将getX和getY公开,因此您的代码将如下所示:

cout << p.getX() << endl;
cout << g.getY();
string s;
cin >> s;

答案 3 :(得分:1)

Point::getX()Point::getY()实际上分别x y - 错误发生在main,您尝试直接访问它们,而不使用你为此目的制造的吸气剂。

cout << p.getX() << endl;

答案 4 :(得分:1)

好像你已经解决了自己编写函数的问题。现在,您所要做的就是更改main以调用这些功能:

// note the proper return type
int main() {
   Point p(5,5);
   cout << p.getX() << endl;
   // more code
   return 0;
}

答案 5 :(得分:1)

您的get_方法是正确的。问题是您没有在main函数中使用它们!试试这个:

cout << p.getX() << endl;