C++错误无法解析的外部符号


//一个矩形类,一个圆形类
//每个类能独自输出自己的周长,面积和位置
//一个场景类包括两个矩形和两个圆形
//场景类中能够控制任意一个图形的放大和缩小和平移
//并能够输出变化后每个图形的周长,面积和位置
#include "stdio.h"
#include"iostream"
#define  PI 3.14 
using namespace std;
class Yuan_kzx;
class Point_kzx
{
    friend class Yuan_kzx;
public:
    int x, y;
    Point_kzx() :x(0), y(0) { };
    Point_kzx(int a, int b) :x(a), y(b) {};
    Point_kzx(Point_kzx & p);
    void Yuanweizhi(Point_kzx a);
};
Point_kzx::Point_kzx(Point_kzx& p) :x(p.x + 10), y(p.y + 10) {};
class Changjing_kzx;
class Yuan_kzx
{
public:
    friend class Changjing_kzx;
    Point_kzx yx;
    int r;
    Yuan_kzx() { r = 3; };
    Yuan_kzx(Point_kzx c, int d) :yx(c), r(d) {};
    Yuan_kzx(Yuan_kzx & a);
    void Yuanzhouchang(Yuan_kzx a);
    void Yuanmianji(Yuan_kzx a);
    void Yuanweizhi(Yuan_kzx a);
};
void Yuan_kzx::Yuanzhouchang(Yuan_kzx a)
{
    float zc;
    zc = 2 * PI *a. r;
    cout << "圆形周长:" << zc << endl;
}
void Yuan_kzx::Yuanmianji(Yuan_kzx a)
{
    float mj;
    mj = PI *a. r * a.r;
    cout << "圆形面积:" << mj << endl;
}
void Yuan_kzx::Yuanweizhi(Yuan_kzx a)
{
    cout << "圆心位置" << a.yx.x << "," << a.yx.y << endl;
    cout << "半径为:" <<a. r << endl;
}
class Rec_kzx
{
    friend class Changjing_kzx;
public:
    Point_kzx a1, a2, a3, a4;
    Rec_kzx() {};
    Rec_kzx(Point_kzx a, Point_kzx b, Point_kzx c, Point_kzx d) :a1(a), a2(b), a3(c), a4(d) {};
    Rec_kzx(Rec_kzx &R);
    void Reczhouchang(Rec_kzx q);
    void Recmianji(Rec_kzx q);
    void Recweizhi(Rec_kzx q);
};
void Rec_kzx::Reczhouchang(Rec_kzx q)
{
    int zc;
    zc = q.a1.y - q.a3.y + q.a2.y - q.a4.y + q.a2.x - q.a1.x + q.a4.x - q.a3.x;
    cout << "矩形周长为:" << zc << endl;
}
void Rec_kzx::Recmianji(Rec_kzx q)
{
    int mj;
    mj = (q.a1.y - q.a3.y) * (q.a2.x - q.a1.x);
    cout << "矩形面积为" << mj << endl;
}
void Rec_kzx::Recweizhi(Rec_kzx q)
{
    cout << "矩形位置" << "(" << q.a1.x << "," << q.a1.y << ")" << "(" << q.a2.x << "," << q.a2.y << ")" << "(" << q.a3.x << "," << q.a3.y << ")" << "(" << q.a4.x << "," << q.a4.y << ")" << endl;
}
class Changjing_kzx
{
public:
    Yuan_kzx a, b;
    Rec_kzx c, d;
    void fdsxjuxing(Rec_kzx c);
    void fdsxyuanxing(Yuan_kzx a);
    void pyjuxing(Rec_kzx c);
    void pyyuanxing(Yuan_kzx b);
};
void Changjing_kzx::fdsxjuxing(Rec_kzx c)
{
    cout << "输入f放大,s缩小" << endl;
    char a;
        cin >> a;
    if (a == 'f')
    {
        c.a1.x--;
        c.a1.y++;
        c.a2.x++;
        c.a2.y++;
        c.a3.x--;
        c.a3.y--;
        c.a4.x++;
        c.a4.y--;
    }
    else if (a == 's')
    {
        c.a1.x++;
        c.a1.y--;
        c.a2.x--;
        c.a2.y--;
        c.a3.x++;
        c.a3.y++;
        c.a4.x--;
        c.a4.y++;
    }
    else
    {
        cout << "输入错误";
    }
}
void Changjing_kzx::fdsxyuanxing(Yuan_kzx b)
{
    cout << "输入f放大,s缩小" << endl;
    char a;
    cin >> a;
    if (a == 'f')
    {
        b.r++;
    }
    else if (a == 's')
    {
        b.r--;
    }
    else
    {
        cout << "输入错误";
    }
}
void Changjing_kzx::pyjuxing(Rec_kzx c)
{
    cout << "输入a向左,d向右" << endl;
    char a;
    cin >> a;
    if (a == 'a')
    {
        c.a1.x--;
        c.a2.x--;
        c.a3.x--;
        c.a4.x--;
    }
    else if (a == 'd')
    {
        c.a1.x++;
        c.a2.x++;
        c.a3.x++;
        c.a4.x++;
    }
    else
    {
        cout << "输入错误";
    }
}
void Changjing_kzx ::pyyuanxing (Yuan_kzx b)
{
    cout << "输入a向左,d向右" << endl;
    char a;
    cin >> a;
    if (a == 'a')
    {
        b.yx.x--;
    }
    else if (a == 'd')
    {
        b.yx.x++;
    }
    else
    {
        cout << "输入错误";
    }
}
int main()
{
    Point_kzx y1(0, 0), j1(4, 5), j2(7, 5), j3(4, 0), j4(7, 0);
    Yuan_kzx c1(y1, 3), c2(c1);
     Rec_kzx r1(j1, j2, j3, j4), r2(r1);
    r2.Recmianji(r2);
    r2.Recweizhi(r2);
    r2.Reczhouchang(r2);
    
}

img

看到无法解析的外部符号 就是说 编译器没找到这个函数的实现

class. Yuan_kzx. 有一个构造函数没有实现