2016-11-07 92 views
0

我正在嘗試使用術語的鏈接列表實現多項式結構(鏈接列表單獨實現)。 當我運行我的主程序時,在定義my setCoeff函數中,行 coeff = x;上出現(線程1:EXC_BAD_ACCESS代碼= 2)錯誤。 我試過註釋掉那個特定的函數調用,但是它給了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

哇我甚至沒有意識到,這樣一個簡單的錯誤..謝謝你,這麼多! –