0

首先,这是我的代码:

头文件的一部分:

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 是一个未声明的标识符。它还说:

Polynomial::polynomial(std::string,std::string,polynomial *)' : 无法将参数 3 从 ' InIt ( _cdecl *)(_InIt,iterator_traits<_Iter>::difference_type)' 转换为 'polynomial *' 1>上下文不允许消除重载函数的歧义

在第二行,它说 newNode 再次未声明。

这里有什么问题?:( 我正在尝试将值放在链表中的结构中。在编码更多之后,我想在输入两个值时创建一个新的链表。

4

1 回答 1

1

您从未声明next, andpoly是一个变量,而不是一个类型。应该polynomial *poly的话poly = new polynomial(input1, input2, next);

于 2013-02-15T00:02:09.457 回答