Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
31 / 34 / 18
Регистрация: 30.09.2011
Сообщений: 202
1

Константные аргументы классов

29.01.2016, 22:49. Показов 713. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый вечер! Поясните мне в чем беда.. есть код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
// Hanoian towers. Lab2
 
#include <iostream>
 
using namespace std;
 
//-----------------------------------------------------
 
class Stack
{
private:
    int top;
    const int MAX;
    int* st;
    static int count;
    const int id;
 
public:
    Stack(int size) : MAX(size), id(++count)
    { 
        st = new int[MAX];
        top = -1;
    }
 
    ~Stack()
    { delete[] st; }
 
    void push(int data)
    {
        if (top >= MAX - 1)
        {
            cout << "Стек полон!!!\n";
            return;
        }
        st[++top] = data;
    }
 
    int pop()
    {
        if (top < 0)
        {
            cout << "Стек пуст!!!\n";
            return 0;
        }
        return st[top--];
    }
 
    int gettop ()
    { return top; }
 
    friend void print(const Stack&, const Stack&, const Stack&);
};
 
int Stack::count = 0;
 
void print(const Stack& a, const Stack& b, const Stack& c)
{
    cout << "\nДисков в " << a.id << " стеке: " << a.gettop()
         << "\nДисков в " << b.id << " стеке: " << b.gettop()
         << "\nДисков в " << c.id << " стеке: " << c.gettop() << endl;
}
Компилятор жалуется на стоки 58 - 60... говорит нельзя gettop () вызывать... почему? я не собираюсь менять значение поля, а он ругается(( объясните пожалуйста
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.01.2016, 22:49
Ответы с готовыми решениями:

Что такое константные аргументы и процесс линковки программы?
Помогите ответить на вопросы которые в заголовке)

Константные и не константные ссылки. Приведения типов. Нужно уточнение
Не очень понимаю в чем различие (2,3 строчки). int x = 10; double &amp;y = x; const double &amp;y...

Константные функции
Почему все работает? class My { public: My(); int retFunc() const; private: ...

Константные объекты
#include &lt;iostream&gt; #include &lt;windows.h&gt; using namespace std; class CTest { public: int...

2
Неэпический
17870 / 10635 / 2054
Регистрация: 27.09.2012
Сообщений: 26,737
Записей в блоге: 1
29.01.2016, 22:52 2
Цитата Сообщение от Lawliet1 Посмотреть сообщение
почему?
объект константный, значит и вызывать у него можно только константные функции-члены.
Сделайте gettop константной:
C++
1
2
    int gettop () const //хей, мы постараемся не менять состояние объекта
    { return top; }
1
31 / 34 / 18
Регистрация: 30.09.2011
Сообщений: 202
29.01.2016, 22:54  [ТС] 3
Быстро и ничего лишнего! большое спасибо)
0
29.01.2016, 22:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.01.2016, 22:54
Помогаю со студенческими работами здесь

Указатели на константные объекты
Нельзя создать неконстантный указатель на константный объект по понятным причинам, но имеем такой...

Константные функции-члены
можно ли функцию-член объявить константной, если она возвращает указатель-член класса? Ведь она не...

Константные функции-члены ?
Для чего использовать #define ? не имеют права изменять поля класса почему ? class Array {...

Константные поля и методы
А можете объяснить, что такое константные поля и методы в классах?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru