
学会在类中引用其他类来作为成员
案例描述:设计一个圆形类(Circle),和一个点类(Point),计算点和圆的关系。
实现代码:头文件circle.h
#include "point.h"
void Point::setX(int x)
{
m_X = x;
}
int Point::getX()
{
return m_X;
}
void Point::setY(int y)
{
m_Y = y;
}
int Point::getY()
{
return m_Y;
}
头文件point.h
#pragma once #includeusing namespace std; class Point { public: void setX(int x); int getX(); void setY(int y); int getY(); private: int m_X; int m_Y; };
源文件point.cpp
#include "point.h"
void Point::setX(int x)
{
m_X = x;
}
int Point::getX()
{
return m_X;
}
void Point::setY(int y)
{
m_Y = y;
}
int Point::getY()
{
return m_Y;
}
源文件circle.cpp
#include "circle.h"
void Circle::setR(int r)
{
m_R = r;
}
int Circle::getR()
{
return m_R;
}
void Circle::setCenter(Point center)
{
m_Center = center;
}
Point Circle::getCenter()
{
return m_Center;
}
void Circle::Position (Circle c1, Point point)
{
int distance = point.getX() * point.getX() - c1.getCenter().getX() * c1.getCenter().getX() + point.getY()
* point.getY() - c1.getCenter().getY() * c1.getCenter().getX();
if (point.getX() == c1.getCenter().getX() && point.getY() == c1.getCenter().getY())
{
cout << "该点在圆心上" << endl;
}
else if (distance == c1.getR() * c1.getR())
{
cout << "该点在圆上" << endl;
}
else if (distance > c1.getR() * c1.getR())
{
cout << "该点在圆外" << endl;
}
else
{
cout << "该点在圆内" << endl;
}
}
主函数文件
#include运行结果:#include "circle.h" using namespace std; //class Point //{ //public: // void setX(int x) // { // m_X = x; // } // int getX() // { // return m_X; // } // void setY(int y) // { // m_Y = y; // } // int getY() // { // return m_Y; // } //private: // int m_X; // int m_Y; //}; // //class Circle //{ //public: // void setR(int r) // { // m_R = r; // } // int getR() // { // return m_R; // } // void setCenter(Point center) // { // m_Center = center; // } // Point getCenter() // { // return m_Center; // } // // void Position(Circle c1, Point point) // { // int distance = point.getX() * point.getX() - c1.getCenter().getX() * c1.getCenter().getX() + point.getY() // * point.getY() - c1.getCenter().getY() * c1.getCenter().getX(); // if (point.getX() == c1.getCenter().getX() && point.getY() == c1.getCenter().getY()) // { // cout << "该点在圆心上" << endl; // } // else if (distance == c1.getR()* c1.getR()) // { // cout << "该点在圆上" << endl; // } // else if (distance > c1.getR()* c1.getR()) // { // cout << "该点在圆外" << endl; // } // else // { // cout << "该点在圆内" << endl; // } // } //private: // int m_R; // Point m_Center; //}; int main() { Circle c1; Point c1p; c1p.setX(0); c1p.setY(0); c1.setR(10); c1.setCenter(c1p); Point c2p; c2p.setX(0); c2p.setY(10); c1.Position(c1, c2p); system("pause"); return 0; }
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)