我需要创建两个单独的链接列表然后进行比较。但是,当我尝试使用相同的运算符重载为构造函数创建第二个列表时,我收到一个错误:
“类型多项式2 *的值不能用于初始化多项式类型的实体*”
以下是我的代码:
标题:
#include <iostream>
#include <string>
using namespace std;
struct polynomial
{
polynomial();
polynomial(string newCoefficient, string newPower, polynomial *nextPtr);
string coefficient;
string power;
polynomial *next;
};
struct polynomial2
{
polynomial2();
polynomial2(string newCoefficient2, string newPower2, polynomial2 *nextPtr2);
string coefficient2;
string power2;
polynomial *next2;
};
class linkedList
{
public:
linkedList();
void callFunctions();
private:
polynomial *head;
polynomial2 *head2;
void makeList(polynomial *head, polynomial2 *head2);
void showList(polynomial *head);
void compareNodes(polynomial *head, polynomial2 *head2);
};
#endif
/* defined(__Assignment3__Polynomial__) */
.CPP代码:
linkedList::linkedList()
{
head = 0;
};
polynomial::polynomial()
{
coefficient = " ";
power = " ";
next = NULL;
};
polynomial2::polynomial2()
{
coefficient2 = " ";
power2 = " ";
next2 = NULL
};
polynomial::polynomial(string newCoefficient, string newPower, polynomial *nextPtr )
:
coefficient(newCoefficient),
power(newPower),
next(nextPtr)
{}
polynomial2::polynomial2(string newCoefficient2, string newPower2, polynomial2 *nextPtr2)
:
coefficient2(newCoefficient2),
power2(newPower2),
next2(nextPtr2)
{}
错误出现在.cpp文件的最后一行“next2(nextPtr2)”。 “nextPtr2”加下划线
答案 0 :(得分:2)
在你的多项式2定义中,你的意思是:
polynomial2 *next2;
而不是
polynomial *next2;
答案 1 :(得分:2)
暂时编译错误,我想你可能正在咆哮错误的树。
这里的关键是你要比较两个基本上具有相同数据类型的列表。
我有一种强烈的感觉,你实际上并不想要两个单独的列表数据类型 - 你只需要一个。
所以你应该真正摆脱polynomial2
并做到这一点:
polynomial *list1;
polynomial *list2;
答案 2 :(得分:2)
而且,既然你已经在使用stl,那么不使用std :: list&lt;&gt;的原因是什么?
struct polynomial
{
polynomial()
:coefficient(" "), power(" ") {}
polynomial(string newCoefficient, string newPower)
:coefficient(newCoefficient), power(newPower) {}
string coefficient;
string power;
};
然后
list<polynomial> list1;
如果在多项式上有相等运算符,则可以比较列表的相等性。并且可能还要做你需要做的所有其他事情。除非你给出的任务不允许使用std :: list,我想这可能。