在嵌套 类 中访问变量
Accessing variables in nested classes
我嵌套了一个 class 以便在另一个 class 中使用,我需要尝试访问它的各个部分,但不能。我该怎么做?
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 值 class?
如果你真的想这样做,那么你可以交 classes 朋友。
class Rectangle;
class Point
{
friend class Rectangle;
public:
Point() { x = 0; y = 0; }
void Input(int &count); //input values
private:
float x, y;
};
但更有可能的是,您只是想将访问器添加到 Point class,因为它实际上毫无用处。
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;
};
或者,如果 Point 真的要这么简单,根本不需要维护任何不变量,只需将 x 和 y 公开为 public 成员即可。
此外,您可能不希望 Point 包含一个 Rectangle,而是通过指针或引用来引用一个 Rectangle,如果它完全引用一个 Rectangle 的话。毕竟,一个 Point 在不引用 Rectangle 的情况下也很有用(例如 - 也许它也用于 Triangles)。
我嵌套了一个 class 以便在另一个 class 中使用,我需要尝试访问它的各个部分,但不能。我该怎么做?
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 值 class?
如果你真的想这样做,那么你可以交 classes 朋友。
class Rectangle;
class Point
{
friend class Rectangle;
public:
Point() { x = 0; y = 0; }
void Input(int &count); //input values
private:
float x, y;
};
但更有可能的是,您只是想将访问器添加到 Point class,因为它实际上毫无用处。
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;
};
或者,如果 Point 真的要这么简单,根本不需要维护任何不变量,只需将 x 和 y 公开为 public 成员即可。
此外,您可能不希望 Point 包含一个 Rectangle,而是通过指针或引用来引用一个 Rectangle,如果它完全引用一个 Rectangle 的话。毕竟,一个 Point 在不引用 Rectangle 的情况下也很有用(例如 - 也许它也用于 Triangles)。