“ this »в C (не C ++)

Я пытаюсь создать стек на C для развлечения, и у меня возникла идея использовать структуру для представления стека. Затем я добавляю указатели на функции в структуру для операций push () и pop ().

Пока все, кажется, хорошо, но для реализации функций push () и pop () мне нужно как-то сослаться на * this. Как это (можно?) Сделать?

Это моя структура

struct Stack {
    int *data;
    int current_size;
    int max_size;
    int (*push)(int);
    int (*pop)();
};

И здесь в качестве примера ' s push

int push(int val) {
    if(current_size == max_size -1)
            return 0;

    data[current_size] = val;
    current_size++;

    return 1;
}

Как вы понимаете, компилятор не знает, что такое current_size , поскольку он ожидает чего-то вроде stack-> current_size .

Можно ли как-то это преодолеть?

14
задан aib 14 December 2010 в 18:14
поделиться