4
挿入演算子がリストクラスで機能しない理由がわかりません。私はそれをしばらく見てきましたが、構文がオーバーロードに適していると思います。これでは分かりません。なぜそれが動作していないのかについてのヒント?コードは次のとおりです。overloaded <<挿入演算子が正しく動作していません
EDIT:現在のコードに変更されています。
申し訳ありませんが、特に問題は今、私は何も印刷せず、シンプルなプリントと空の行を印刷できないことです。ここ
はドライバーズ:
#include <iostream>
#include "polynomial.h"
using namespace std;
int main(){
Polynomial* poly = new Polynomial();
poly->set_coefficient(3,2);
poly->set_coefficient(0,2);
poly->set_coefficient(3,1);
cout << "trying to print data" << endl;
cout << *poly << endl;
return 0;
}
はここにヘッダーです:
#ifndef _POLYNOMIAL_H_
#define _POLYNOMIAL_H_
#include <iostream>
class Polynomial {
public:
struct PolyNode {
int coefficient, degree;
struct PolyNode* next;
PolyNode(int c, int d, PolyNode* n): coefficient(c),degree(d),next(n){}
};
PolyNode* firstTerm;
Polynomial(): firstTerm(0) {}
struct PolyNode* get_first(){
return firstTerm;
}
//makes the term with degree d have a coefficient of c
void set_coefficient(int c, int d);
~Polynomial();
friend std::ostream& operator<<(std::ostream& o, const Polynomial& p);
};
#endif
は、ここに実装だ:
#include "polynomial.h"
#include <iostream>
#include <ostream>
using namespace std;
void Polynomial::set_coefficient(int c, int d){
PolyNode* start = firstTerm;
if(c != 0 && firstTerm == 0)
firstTerm = new PolyNode(c,d,NULL);
else{
cout << "Entered set_coefficient()" << endl;
while(start->degree != d && start->next != NULL){
cout << "Inside set_coefficient() while loop" << endl;
start = start->next;
}
if(c != 0 && start == 0)
start = new PolyNode(c,d,0);
else if(c!= 0 && start != 0)
start->coefficient = c;
else if(c == 0){
cout << "deleting a term" << endl;
delete start;
}
}
cout << "Leaving set_coefficient()" << endl;
}
ostream& operator<<(ostream& o,const Polynomial& p){
Polynomial::PolyNode* start = p.firstTerm;
for(unsigned int i = 0; start->next != 0; i++){
o << "Term " << i << "'s coefficient is: " << start->coefficient << " degree is: " << start->degree << endl << flush;
start = start->next;
}
return o;
}
「有効ではありません」は有効な問題の説明ではありません。それはコンパイルに失敗しますか?実行時にクラッシュしますか?それはクラッシュせずに実行されますが、予期しない結果を生成しますか?質問を投稿するときにそのような情報を追加してみてください。私はまた、[完璧な質問を書く](http://tinyurl.com/so-hints)を読むことをお勧めします。 –
@Martinho Fernandesメインメソッドで挿入を使用するときです。それは、リストに作成された2つの用語のデータを出力するはずですが、代わりにメモリアドレスを出力します。 –
@Keoki Zee。私はあなたのために1つを入れます:) –