永发信息网

编译没问题,链接却有问题

答案:2  悬赏:20  手机版
解决时间 2021-03-19 17:19
  • 提问者网友:沉默的哀伤
  • 2021-03-19 00:45
#include
#include"cmath"
using namespace std;

template
struct Node
{
T data;
Node * next;
};

struct element
{
double coef; int exp;
element(double c=0,int e=0):coef(c),exp(e){};
};

template
class LinkList
{
public:
//构造函数

Node* GetFirst(){return front;};

private:
Node*front;
};

template
class PolyList:public LinkList //定义一元多项式类,该类为LinkList的派生类
{
public:
PolyList( element data[],int n);
void Add(PolyList & B);
void PrintList()
{

Node * p = GetFirst(); //获取第一个结点
p->next;
while(p)
{
cout<<"("<data.coef<<","<data.exp<<")";
p = p->next;
}
cout< };

};
template
void PolyList::Add(PolyList & B) // 定义求和函数
{
Node * p_prior =GetFirst(); //获取头指针
Node * p = p_prior->next; //初始化工作指针
Node * q = B.GetFirst()->next; //初始化B链表工作指针
while(p&&q)
{
if(p->data.exp < q->data.exp)
{ p_prior = p; p = p->next; }
else if(p->data.exp > q->data.exp)
{ p_prior->next = q; p_prior = q; q = q->next; }
else
{
p->data.coef =q->data.coef;
if(fabs(p->data.coef)<1e-7)
{
p_prior->next = p->next;
delete p;
p_prior->next;
}
else
{
p_prior = p;
p = p_prior->next;
}
Node * temp = q;
q = q->next;
delete temp;
}
}
if(q)p_prior -> next = q; //第四种情况
B.GetFirst() -> next = NULL;
}

void main()
{

element ea[]={element(2,0),element(1.5,1),element(-2.3,2),element(5,4)} ;
element eb[]={element(2,1),element(-2.3,2),element(3.4,3),element(1.5,4),element(6,5)} ;
PolyList a(ea,4),b(eb,5);
a.Add(b);
a.PrintList();
}
编译没问题,链接时出现“ error LNK2001: unresolved external symbol "public: __thiscall PolyList::PolyList(struct element * const,int)" (??0?$PolyList@Uelement@@@@QAE@QAUelement@@H@Z)
Debug/sam.exe : fatal error LNK1120: 1 unresolved externals
执行 link.exe 时出错”有哪位帮忙看下

谢谢啊,我改了后,编译链接都没问题,可是运行却出问题,是不是我这个程序本身有问题?谢谢了!实在很困惑。
最佳答案
  • 五星知识达人网友:骨子里都是戏
  • 2021-03-19 01:06
呵呵。
你想定义一个多项式类,这个类的整体结构都是对的。

只是,你声明了一个PolyList的非默认构造函数PolyList,而且还是用了它,但就是没定义它。

注意看下就知道了。 PolyList自定义构造函数你没给它写函数体。
全部回答
  • 1楼网友:七十二街
  • 2021-03-19 01:36
链接静态库的意思就是在编译阶段需要将静态库链接到工程中,这样在编译时程序才不会出错,在用到静态库的函数时能够找到函数的实现,如果没有链接静态库则编译时会报错。 这里需要区分的就是链接动态库与静态库的区别,你可以到网上找一些资料看看。 而且链接静态库是将整个库文件都导入到了工程中,所以会增加工程的大小。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯