为什么显示(“pl”: 未声明的标识符)(小白,求解答)

#include
#include
using namespace std;
class Point
{
public:
Point(double xi =0,double yi=0)
{x=xi;y=yi;}
double GetX(){return x;}
double GetY(){return y;}
private:
double x;
double y;
};
class Distance
{

public:
Distance(Point xp1,Point xp2):
p1(xp1),p2(xp2)
{
double x =pl.GetX()-p2.GetY();

double y =p1.GetY()-p2.GetY();
double dis =sqrt(x*x+y*y);
}
double Getdis()
{
return dis;
}

private:
double dis;
Point p1,p2;

};
int main()
{
Point mp1(1,0),mp2(2,2);
Distance mdis(mp1,mp2);
cout<<"the distance is :"<<mdis.Getdis()<<endl;
}

double x =pl.GetX()-p2.GetY();这一句中把数字“1”打成字母“l”了

3个错误:
1.p1写成了pl
2.double x = p1.GetX() - p2.GetY();应该是double x = p1.GetX() - p2.GetX();
3.double dis =sqrt(x*x+y*y);应该是dis =sqrt(x*x+y*y);

 #include<iostream>
#include<cmath>
using namespace std;
class Point
{
public:
    Point(double xi = 0, double yi = 0)
    {
        x = xi; y = yi;
    }
    double GetX(){ return x; }
    double GetY(){ return y; }
private:
    double x;
    double y;
};
class Distance
{
public:
    Distance(Point xp1, Point xp2) :
        p1(xp1), p2(xp2)
    {
        double x = p1.GetX() - p2.GetX();

        double y = p1.GetY() - p2.GetY();
        dis = sqrt(x*x + y*y);
    }
    double Getdis()
    {
        return dis;
    }

private:
    double dis;
    Point p1, p2;

};
int main()
{
    Point mp1(1, 0), mp2(2, 2);
    Distance mdis(mp1, mp2);
    cout << "the distance is :" << mdis.Getdis() << endl;
}