Celeste 2022-12-12 19:35 采纳率: 100%
浏览 26
已结题

C++无法解析的外部符号问题如何解决

######如题,我想用C++类的方法求坐标系中四边形周长和面积

这是我函数的实现代码
#include <iostream>
#include <math.h>
#include "work.h"
using namespace std;

  double work::perimeter()
{
    double a,b,c,d;
    a = sqrt((x[1] - x[0]) * (x[1] - x[0]) + (y[1] - y[0]) * (y[1] - y[0]));
    b = sqrt((x[2] - x[1]) * (x[2] - x[1]) + (y[2] - y[1]) * (y[2] - y[1]));
    c = sqrt((x[3] - x[2]) * (x[3] - x[2]) + (y[3] - y[2]) * (y[3] - y[2]));
    d = sqrt((x[0] - x[3]) * (x[0] - x[3]) + (y[0] - y[3]) * (y[0] - y[3]));
    return (a + b + c + d);
}
double work::area()
{
    double a, b, c, d;
    a = sqrt((x[1] - x[0]) * (x[1] - x[0]) + (y[1] - y[0]) * (y[1] - y[0]));
    b = sqrt((x[2] - x[1]) * (x[2] - x[1]) + (y[2] - y[1]) * (y[2] - y[1]));
    c = sqrt((x[3] - x[2]) * (x[3] - x[2]) + (y[3] - y[2]) * (y[3] - y[2]));
    d = sqrt((x[0] - x[3]) * (x[0] - x[3]) + (y[0] - y[3]) * (y[0] - y[3]));
    double e = sqrt((x[2] - x[0]) * (x[2] - x[0]) + (y[2] - y[0]) * (y[2] - y[0]));
    double p1 = (a + b + e) / 2;
    double p2 = (c + d + e) / 2;
    double s1 = sqrt(p1 * (p1 - a) * (p1 - b) * (p1 - e));
    double s2 = sqrt(p2 * (p2 - c) * (p2 - d) * (p2 - e));
    return (s1 + s2);
}

这是我的头文件代码

#pragma once
class work
{
public:
    double x[4], y[4];
    work();
    work(double x[], double y[]);
    double perimeter();
    double area();
    
    
};

这是我的测试代码

#include <iostream>
#include"work.h"
using namespace std;

int main()
{
    double x[4] = { 1,1,2,2 };
    double y[4] = { 1,2,2,1 };
    work A(x, y);
    cout << A.perimeter();
    
}


运行后,这是我的报错结果

严重性 代码 说明 项目 文件 行 禁止显示状态
错误 LNK2019 无法解析的外部符号 "public: __cdecl work::work(double * const,double * const)" (??0work@@QEAA@QEAN0@Z),函数 main 中引用了该符号

想要解决这个问题,求帮忙
我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%
我想要达到的结果,如果你需要快速回答,请尝试 “付费悬赏”
  • 写回答

3条回答 默认 最新

  • CSDN专家-link 2022-12-12 20:16
    关注

    两个构造函数你都没有写函数体啊
    默认构造函数可以删掉,或者改为
    work() {}
    有参构造函数要实现参数复制到成员变量

    work::work(double x[], double y[])
    {
        for(int i=0;i<4;i++)
        {
            this->x[i] = x[i];
            this->y[i] = y[i];
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 12月21日
  • 已采纳回答 12月13日
  • 创建了问题 12月12日

悬赏问题

  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan