首先,这是我的代码:
标头文件的一部分:
struct polynomial
{
polynomial();
polynomial(string newCoefficient, string newPower, polynomial *nextPtr);
string coefficient;
string power;
polynomial *next;
};
class linkedList
{
public:
void makeList();
private:
polynomial *head;
};
.cpp文件:
polynomial:: polynomial ( string newCoefficient, string newPower, polynomial *nextPtr )
:
coefficient(newCoefficient),
power(newPower),
next(nextPtr)
{}
void linkedList::makeList()
{
polynomial poly;
string input1, input2;
cin >> input1;
cin >> input2;
while (input1 != "-999" && input2 != "-999")
{
poly *newNode = new polynomial (input1, input2, next);
next = newNode;
cin >> input1;
cin >> input2;
}
}
然而,问题在于这两行代码:
poly *newNode = new polynomial (input1, input2, next);
next = newNode;
在第一行中,它表示newNode是未声明的标识符。它还说:
多项式::多项式(std :: string,std :: string,polynomial *)':无法从' InIt( _cdecl *)转换参数3(_ InIt,iterator_traits< _Iter> :: difference_type)'到'多项式*' 1 GT;上下文不允许消除重载函数的歧义
在第二行中,它表示newNode再次未申报。
这是什么问题? :(我正在尝试将值放在链表中的结构中。在编码了一点之后,我想在输入两个值时创建一个新的链表。
答案 0 :(得分:1)
您从未声明next
,poly
是变量,而不是类型。应该是polynomial *poly
,然后是poly = new polynomial(input1, input2, next);
。