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

Bad Access Error on XCode C++

本文关键字:错误 访问 C++ XCode      更新时间:2023-10-16

我正在尝试使用术语链表实现多项式结构(链表是单独实现的(。 当我运行我的主程序时,我收到一个(线程 1:EXC_BAD_ACCESS 代码=2(错误 coeff = x;定义中我的setCoeff函数。我尝试注释掉该特定函数调用,但它为 setX(( 和 setY(( 函数提供了相同的错误。我想我已经正确设置了我的文件和功能,我不知道为什么它不让我使用这些功能。请帮忙!按顺序,我包括:多项式.h,多项式.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);
}

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

请改为这样做。

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

或者,如果您不需要它作为指针,则可以创建一个简单的堆栈变量并使用"."运算符访问它,如下所示...

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