2015-02-17 3 views
0

Я вложил класс для использования в другом классе и должен попытаться получить доступ к отдельным частям, но не могу. Как мне это сделать?Доступ к переменным во вложенных классах

class Point 
{ 
public: 
    Point() { float x = 0, y = 0; } 
    void Input(int &count);      //input values 
    Rectangle myRec; 

private: 
    float x, y; 

}; 


class Rectangle 
{ 
public: 
    Rectangle();  //side1 - horizontal, side2 - vertical 
    void SetPoint(const Point point1, const Point point2, const Point point3, const Point point4) { LLPoint = point1; LRPoint = point2; URPoint = point3; ULPoint = point4; } 
    float CalcSides(Point LL, Point LR, Point UL, Point UR); 

private: 
    Point LLPoint, LRPoint, ULPoint, URPoint;  
    float side1, side2, length, width, area, perimeter; //side1 - horizontal, side2 - vertical 
}; 

float Rectangle::CalcSides(Point LL, Point LR, Point UL, Point UR) 
{ 
    side1 = (LR.x - LL.x); 
} 

Как получить доступ к значениям x и y для точек, которые я создал в классе Rectangle?

+0

Я забыл упомянуть, что у меня проблемы с функцией Rectangle :: CalcSides. Он продолжает говорить мне, что значения х недоступны. – Hawkrocker

ответ

0

Если вы действительно хотите это сделать, вы можете сделать занятия друзьями.

class Rectangle; 

class Point 
{ 
    friend class Rectangle; 

public: 
    Point() { x = 0; y = 0; } 
    void Input(int &count);      //input values 

private: 
    float x, y;  
}; 

Больше всего, хотя, вы просто хотите добавить аксессоров к классу точки, как это довольно бесполезно, как есть.

class Point 
{ 
public: 
    Point() { x = 0; y = 0; } 
    void Input(int &count);      //input values 

    float getX() const { return x; } 
    float getY() const { return y; } 

private: 
    float x, y;  
}; 

Или, если точка на самом деле будет так просто и не нужно поддерживать любые инварианты на всех, просто разоблачить х и у как представителей общественности.

Кроме того, вы, вероятно, не хотите, чтобы точка содержала прямоугольник, а скорее обращалась к ней либо через указатель, либо ссылку, если она относится к одному вообще. В конце концов, точка может быть полезна без ссылки на прямоугольник (например, возможно, он также используется для треугольников).

Смежные вопросы