c++下表要求数组或指针类型

本人c++入门在学习c++时,尝试做一个通讯录管理系统实例,可是写着就遇到了问题,提示“下标要求数组或指针”,恳请高人指点,谢谢!
代码块
#include
#include
using namespace std;
#define max 1000
struct link {
    struct people pdata[max];
    int m_size;
};
void addpperson(link*);
struct people {
    string name;
    int sex;
    int age;
    string number;
    string loction;
};
void showmanu() {
    cout << "******************************" << endl;
    cout<<  "*********" << "1.添加联系人"  << "*********" << endl;
    cout << "*********" << "2.显示联系人" << "*********" << endl;
    cout << "*********" << "3.删除联系人" << "*********" << endl;
    cout << "*********" << "4.查找联系人" << "*********" << endl;
    cout << "*********" << "5.修改联系人" << "*********" << endl;
    cout << "*********" << "6.清空联系人" << "*********" << endl;
    cout << "*********" << "0.退出通讯录" << "*********" << endl;
    cout << "******************************" << endl;
}
int main() {
    showmanu();
    cout << "欢迎使用通讯录管理系统,请选择您需要的服务。" << endl;
    //初始化通讯录
    struct link abs;
    abs.m_size = 0;
    select(&abs);                                              //"select":找不到标识符

    return 0;
}
void addperson(link* abs) {
    if (abs->m_size == max) {
        cout << "通讯录已满!添加失败!" << endl;
        return;
    }
    else {
        cout << "请输入名字 :" << endl;
        string name;
        cin >> name;
        abs->pdata[abs->m_size].name = name;**//下标要求数组或指针类型**
        cout << "请输入性别:" << endl;
        int sex;
        cin >> sex;
        abs->pdata[abs->m_size].sex = sex;**//下标要求数组或指针类型**
        cout << "请输入年龄:" << endl;
        int age;
        cin >> age;
        abs->pdata[abs->m_size].age = age;**//下标要求数组或指针类型**
        cout << "请输入电话号:" << endl;
        string number;
        cin >> number;
        abs->pdata[abs->m_size].number = number;**//下标要求数组或指针类型**
        cout << "请输入住址:" << endl;
        string loction;
        cin >> loction;
        abs->pdata[abs->m_size].loction = loction;**//下标要求数组或指针类型**
        abs->m_size += 1;
        showmanu();
        return;
    }
}
void select(link *abs) {
    int a = 0;
    while (true){
        cin >> a;
        showmanu();
        switch (a) {
        case 1:
            addperson(abs);
                break;
        case 2:
            break;
        case 3:
            break;
        case 4:
            break;
        case 5:
            break;
        case 6:
            break;
        case 0:
            cout << "欢迎下次使用!" << endl;
            return ;
            break;

        }
    }
}


代码还没写完就出错了,abs->pdata[abs->m_size].name = name;我的意是在键盘输入name后,能把name给pdata[abs->m_size].name,想不通是类型错了吗?

把link结构体放到people后面,或者link前先声明people,主要是link里的people没有事先声明导致的,另外你这个select函数也没有事先声明。