0

2 つの個別のリンク リストを作成し、それらを比較する必要があります。ただし、コンストラクターに対して同じ演算子のオーバーロードを使用して 2 番目のリストを作成しようとすると、エラーが発生します。

「polynomial2* 型の値は、polynomial* 型のエンティティの初期化には使用できません」

そのセクションのコードは次のとおりです。

ヘッダ:

#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」には下線が引かれています

4

3 に答える 3

2

また、すでにstlを使用しているので、std :: list <>を使用しない理由は何ですか?

struct polynomial
{ 
    polynomial()
      :coefficient(" "), power(" ") {}
    polynomial(string newCoefficient, string newPower)
      :coefficient(newCoefficient), power(newPower) {}
    string coefficient;
    string power;
};

その後

list<polynomial> list1;

多項式に等式演算子がある場合は、リストを比較して等式を確認できます。そして、おそらくあなたがする必要がある他のすべてのこともしなさい。あなたが与えられた割り当てがstd::listの使用を許可しない場合を除いて、私はそれがそうかもしれないと思います。

于 2013-02-15T02:44:15.410 に答える
2

エラーを少し脇に置いて、間違ったツリーを吠えているのではないかと思います。

ここで重要なのは、本質的に同じデータ型を持つ2つのリストを比較することです。

私は、実際には2つの別々のリストデータ型は必要ない、つまり1つだけが必要だと強く感じています。

したがって、実際にこれを取り除き、polynomial2これを行う必要があります。

polynomial *list1;
polynomial *list2;
于 2013-02-15T02:33:00.023 に答える
2

polynomial2 の定義では、以下を入れるつもりでしたか?

polynomial2 *next2;

それ以外の

polynomial *next2;
于 2013-02-15T02:27:32.613 に答える