在写词法分析器的实验,其中想实现一个保留字表保存所有保留字,是字符串形式的,用一个函数实现识别一个字符串是否是保留字的功能

问题遇到的现象和发生背景

在写词法分析器,其中想实现一个保留字表保存所有保留字,是字符串形式的,用一个函数实现识别一个字符串是否是保留字的功能。

问题相关代码,请勿粘贴截图
#include <iostream>
#include <string>

using namespace std;
const int MaxSize = 100;

//保留字表,保留字的data = 字符串内容,index = 保留字在表中的序号(从零开始)
class KeyWordList {
public:
    string * data;
    int length;
    KeyWordList() {
        length = 11;
        data[0] = "int";
        data[1] = "string";
        data[2] = "bool";
        data[3] = "while";
        data[4] = "if";
        data[5] = "switch";
        data[6] = "case";
        data[7] = "else";
        data[8] = "return";
        data[9] = "main";
        data[10] = "new";
    }//默认构造函数,保留字表内容是固定的;
};

static KeyWordList KeyWordList1 = KeyWordList();

//(重要)处理保留字,对token中的字符串查保留字表,若查到,返回保留字的序号,否则返回MaxSize;
//MaxSize是一个足够大的数,不会和已有的保留字序号发生冲突
int reserve(string token) {
    int len = KeyWordList1.length;
    for (int i = 0; i < len; i++) {
        if (token == KeyWordList1.data[i])
            return i;
    }
    return MaxSize;
}

int main()
{   
    cout << reserve("case") << endl;
    return 0;
}



运行结果及报错内容

我也看不懂这个,哭了!

img

data没有new 怎么能用?