2013-12-10 2 views
0

구조체를 사용하는 방법을 배우려고하지만 (아마도 매우 간단합니다) 문제가 있습니다. RECT 구조체에 속하는 POINT 구조체에 저장된 변수 x를 어떻게 참조 할 수 있습니까? 시작은 항상 저에게 어렵습니다. 간단히 r1.bottom_leftPoint& 반환이 r1.bottom_left.x다른 구조체의 일부인 구조체에 저장된 변수를 참조하는 방법

공지 사항 등의

#include <iostream> 
using namespace std;  

struct Point { 
    int x, y; 
}; 

struct Rect { 
    Point bottom_left, top_right; 
}; 

void printPoint(const Point* p){ 
    cout << "(" << p->x << "," << p->y << ")"; 
} 

void printRect(const Rect* r){ 
    cout << "["; printPoint(&r->top_right); 
    cout << ","; printPoint(&r->bottom_left); 
    cout << "]" << endl; 
} 

bool haveIntersection(const Rect* r1, const Rect* r2){ 
    cout << &r1->bottom_left->x; 
} 


int main() { 
    Rect r1 = { {1,1}, {4,3} }; 
    Rect r2 = { {2,0}, {3,4} }; 
    Rect r3 = { {0,4}, {1,5} }; 
    printRect(&r1); 
    haveIntersection(&r1, &r2); 
} 
+1

대신 & R -> TOP_RIGHT의, 내가 선호 및 (R-> TOP_RIGHT) 연산자 우선 순위에 대한 혼란을 방지합니다. 또한, & r1-> bottom_left-> x가 올바르지 않습니다. –

+0

@AbhishekBansal 나는이 & r1-> bottom_left-> x 문제를 가지고 있습니다. x 변수에 액세스하려면 어떻게해야합니까? – propict

+1

(r1-> bottom_left) .x 또는 ((* r1) .bottom_left) .x –

답변

4

귀하의 구조체처럼 작업 할 수 있습니다 당신이 사각형 개체를 선언하면

struct Point { 
    int x, y; 
}; 

struct Rect { 
    Point bottom_left, top_right; 
}; 

있습니다 : 이것으로 당신은 X에 액세스 할 수 있습니다

Rect rectangle; 
Rect* rectanglePtr = new Rect(); 

, y 값을 way :

rectangle.bottom_left.x; 
rectanglePtr->bottom_left.x; 

귀하의 경우

, 될 haveIntersection 편집 :

bool haveIntersection(const Rect* r1, const Rect* r2) { 
    /* Warning: you aren't using r2 var and return nothing */ 
    cout << (r1->bottom_left).x; 
} 
+0

bool hasIntersection()에 문제가 있습니다. 너 볼 수있어? Becouse 나는 아마도 포인터 또는 뭔가 잊어 버렸지 만, 나는 정말로 거기에 무엇이 잘못되었는지 전혀 모른다. 내가 원하는 것은 x 변수에 접근 할 수 있지만, 이것은 틀린 & r1-> bottom_left-> x입니다. – propict

+0

감사합니다. 그 쉬운 그런 물건과 나는 벌써 그것을 2 시간 낭비했다. 예, 저는 r2에서 아무것도 반환하지 않는 것을 알고 있지만, 그 시작과 나는 이미 갇혀 있습니다. 너는 나의 영웅이야 :). – propict

+0

귀하의 편집에 괄호가 필요하지 않습니다. – Paranaix

2

. 그 때문에 당신은 다른 Point

관련 문제