2011-03-23 5 views
0

개인 멤버 x 및 y에 액세스 할 수 없다는 오류가 발생합니다. x와 y를 볼 수 있도록 getX()와 getY() 메소드를 작성하려면 어떻게해야합니까? 감사.C++에서 간단한 클래스 작성

#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; 

} 
+0

당신은 또한 오 – dcousens

답변

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

x 및 y는 비공개이므로 액세스 할 수 없습니다. 그러나 getX와 getY() 공개 한, 그래서 당신의 코드는 다음과 같습니다

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

Point::getX()Point::getY() 실제로 x 각각 y를 참조 - 오류가 당신이 직접 액세스하려고 당신의 main,에, 이 목적을 위해 만든 게터를 사용하지 않아도됩니다.

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

여러분이 직접 함수를 작성하는 문제를 해결 한 것처럼 보입니다. 이제 당신이 할 일은 그 함수를 호출하기 위해 main을 변경한다 :

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

get_ 방법이 정확합니다. 문제는 귀하의 main 기능에서 사용하지 않는 것입니다! 이 시도 :

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

생성자 정의 누락 없을 겁니다! 이런! 감사! – user620189

2

그것이

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