我希望在一个类中定义一个数组,并将该类的变量设置为数组的元素。以下实现导致分段错误:

class Grade {
    char MAP[];
    char *letter;
public:
    Grade();
    ~Grade();
    void set(int);
};
 Grade::Grade(){
    letter = new char;
    *letter = '\0';

    MAP[0] = 'A';
    MAP[1] = 'B';
    MAP[2] = 'C'; // result in segmentation fault

    MAP = { 'A', 'B', 'C'}; // result in segmentation fault
    }

Grade::~Grade(){
    delete letter;
    delete percent;
}

void Grade::set(int a){
    *letter = MAP[a];
}

我该如何解决?

最佳答案

最快的方法是将char MAP[];更改为char MAP[3];
代码中还有其他有趣的事情。

1)它不会像给定的那样进行编译(您永远不会定义百分比是多少)。
2)如果有人将“int a”发送到您的 map 范围之外的set函数会怎样? (即:56,而不是0、1或2)?

10-02 21:32