2016-11-07 98 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

哇我甚至没有意识到,这样一个简单的错误..谢谢你,这么多! –