На первый взгляд, эта функция:
void emptystack(struct stack* s)
{
s->top=EMPTY;
}
Отсутствует оператор области (::
), поэтому вы, вероятно, намеревались записать его как:
void mystack::emptystack(struct stack* s)
{
s->top=EMPTY;
}
IЯ не уверен, что это ваша проблема, так как «я пытаюсь вызвать функцию» немного расплывчато.Возможно, вы захотите точно сузить место возникновения ошибки, а затем отредактируйте свой вопрос с дополнительной информацией.
Редактировать: Рассматривая вашу реализацию немного подробнее, яне знаю, почему вы вообще создали класс mystack
.Похоже, вы просто хотите определить набор функций, которые работают с вашей stack
структурой, которая не требует определения класса.Если вы хотите сделать это таким образом по какой-то необычной причине, вам придется создать экземпляр объекта mystack
, прежде чем вы сможете вызывать его функции-члены.Нечто из природы:
mystack * myStackObj = new mystack();
myStackObj->emptystack(&X);
Хотя я не уверен, почему вы захотите это сделать.Другая альтернатива - вместо этого свернуть вашу stack
структуру в класс, либо сделав всю структуру членом класса, либо просто добавив data
и top
в класс.Затем, если вы создадите экземпляр объекта mystack
, он будет иметь данные стека и сможет вызывать методы для своих собственных данных.Я также предложил бы взглянуть на учебник / документацию / книгу, относящуюся к классам C ++ и их использованию. Вот один , но, несомненно, есть множество других.