XCode C ++上的错误访问错误

时间:2016-11-07 03:47:23

标签: access

我正在尝试使用链接的术语列表来实现多项式结构(链接列表是单独实现的)。  当我运行我的主程序时,我得到一个(线程1:EXC_BAD_ACCESS代码= 2)错误 我的coeff = x;函数定义中的setCoeff。 我试着注释掉那个特定的函数调用,但它给了我setX()和setY()函数的相同错误。 我想我的文件和功能设置正确,我无法弄清楚为什么它不让我使用这些功能。 请帮忙 ! 按顺序,我包括:Polynomial.h,Polynomial.cpp和main.cpp。

    #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);
}

1 个答案:

答案 0 :(得分:0)

您永远不会创建对象。你有Term* t1,它是一个未初始化的指向随机内存的指针,然后你尝试将它与t1->setCoeff(4)一起使用,它试图使用一个从未创建过的对象。这肯定会出错。

这样做..

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

或者,如果您不需要它作为指针,您可以创建一个简单的堆栈变量并使用&#39;来访问它。&#39;像这样的运营商...

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