И что тут объект? И как применить к нему метод? C++. Начальный уровень.

программирование C++ cpp

#include <iostream>

class stack
{
private:
int top; //the top cell
int s[10]; //the stack array

public:
stack():top(0){}

void push(int var); //the pushin func
int pop(); //the poppin func
bool empty(int top);
bool full(int top);
};

void stack::push(int var)
{
if (!full)
{
top++;
s[top] = var;
}
}

int stack::pop()
{
if (!empty)
{
int var=s[top];
top--;
return var;
}
}

bool stack::empty(int top)
{
if (top==0) return 1; else return 0;
}

bool stack::full(int top)
{
if (top==9) return 1; else return 0;
}


собственно не могу понять как вызвать функции full и empty. может !s.full(top)? !full(top)? а то надо разобраться с классами, но в этом случае мне не совсем ясно, какой у меня объект. По идее, мой объект- это стек. И я хочу с ним делать всякие штуки. например проверить полный он или пустой. А значит я должен по идее написать "объект.метод(аргумент)". Но я не уверен. Помогите, пожалуйста. Вопрос, наверное легкий.

Примечание:
ага, точняк. сам стек то я и не сделал.
значит, допустим, у меня будет

stack first(){};

тогда if(!first.full())... так?

а любая функция класса имеет доступ к любым свойствам?

Примечание:
Как можно заполнить стек какими-нибудь вводящимися данными, через _getch(), например? А то ведь мне чтобы сделать новый объект надо его задать, а для этого надо б сделать конструктор. В дефолтном конструкторе вроде как _getch() не помещается. Да и как вообще этот массив инициализировать? Или открыть фигурные скобки конструктора и написать туда обычный цикл инициализации?
Совсем я запутался (%

Примечание:
Спасибо, вроде разобрался теперь со всем. Буду пока учить дальше. А пока что почитаю что-нибудь про ООП. А то классы надо б посмотреть как юзаются.
Ответы:
Чёт я не вижу чтобы ты объекты создавал.... сделай как-то так:
int main(){
  stack s = new stack; // это создание объекта
  /////////////////
  if( !s.full() )
       s.push( 5 );
  else cout << "Хватит уже!";
  ///////////////////
}
в этом примере stack это класс, а s это объект класса stack.
ЗЫ по-моему тебе не нужен параметр int top у методов empty и full. Свойство top и так описано внутри класса.
хочу дополнить предыдущий ответ, у тебя еще есть ошибки в коде:
void stack::push(int var)
{
if (!full)
{..


12 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.