2016-11-07 8 views
0

リンクリストを使用して多項式構造を実装しようとしています(リンクリストは別途実装されています)。 私のメインプログラムを実行すると、(スレッド1:EXC_BAD_ACCESSコード= 2)エラー coeff = x;の私のsetCoeffの定義でエラーが発生します。 私はその特定の関数呼び出しをコメントアウトしようとしましたが、setX()とsetY()関数で同じエラーが発生します。 ファイルと関数が正しく設定されていると思いますが、なぜこれらの関数を使用させないのかわかりません。 助けてください! 順番には、Polynomial.h、Polynomial.cpp、およびmain.cppが含まれています。XCode C++で不正アクセスエラー

#ifndef __Polynomial__Polynomial__ 
    #define __Polynomial__Polynomial__ 

    #include <stdio.h> 

    class Term { 
    private: 
     int coeff; 
     int deg_x; 
     int deg_y; 
    public: 
     Term(); 
     int getCoeff(); 
     int getX(); 
     int getY(); 
     void setX(int); 
     void setY(int); 
     void setCoeff(int); 
    }; 


    #endif /* defined(__Polynomial__Polynomial__) */ 

___________________________ 
#include "Polynomial.h" 

Term::Term() { 
    coeff = NULL; 
    deg_x = NULL; 
    deg_y = NULL; 
} 

int Term::getCoeff(){ 
    return coeff; 
} 
int Term::getX() { 
    return deg_x; 
} 
int Term::getY() { 
    return deg_y; 
} 
void Term::setX(int x){ 
    deg_x = x; 
} 
void Term::setY(int x){ 
    deg_y = x; 
} 
void Term::setCoeff(int x){ 
    coeff = x; 
} 
__________________________ 
#include <iostream> 
#include <fstream> 
#include "Polynomial.h" 

int main() { 
    Term* t1; 
    t1->setCoeff(4); 
    t1->setX(3); 
    t1->setY(6); 
} 

答えて

0

オブジェクトを作成することはありません。ランダムなメモリへの初期化されていないポインタであるTerm* t1を持っていて、決して作成されなかったオブジェクトを使用しようとしているt1->setCoeff(4)でそれを使用しようとします。それは間違いなく間違っています。

..代わりに

auto t1 = std::make_unique<Term>(); 

これを行うそれとも、ポインタをすることを必要としない場合、あなたはそれを持つ単純なスタック変数とアクセスを作成することができます「」このような演算子...

Term t1; 
t1.setCoeff(4); 
t1.setX(3); 
t1.setY(6); 
+0

ワウ私は、このような単純な間違いを理解していませんでした..ありがとう、そんなに! –

関連する問題