Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 09.06.2015
Сообщений: 6

Не могу разобраться с ошибкой

02.06.2016, 23:43. Показов 729. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В общем такой код

Source.cpp
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#include <iostream>
using namespace std;
#include "header.h"
 
stack_type::stack_type()
{
    elems = 0;
    number_of_elem = 0;
    cout << "Введите число элементов, которые хотите ввести в стек (не больше 100): " << endl;
    cin >> number_of_elem;
    if (number_of_elem > SIZE)
    {
        number_of_elem = 0;
        cout << "Стек не инициализирован - количество элементов больше 100" << endl;
    }
    else
    {
        cout << "Стек инициализирован" << endl;
    }
};
stack_type::~stack_type()
{
    cout << "Стек разрушен" << endl;
};
 
void stack_type::push(int b)
{
    if (elems == SIZE) {
        cout << "Стек переполнен" << endl;
        return;
    }
    stck[elems] = b;
    elems++;
    return;
};
 
int stack_type::pop()
{
    if (elems == 0) {
        cout << "Стек не заполнен" << endl;
        return 0;
    }
    elems--;
    cout << "Последний элемент удален из стека." << endl;
    return stck[elems];
};
 
int stack_type::back()
{
    cout << "Вверхний элемент стека: " << stck[elems - 1] << endl;
    return stck[elems];
};
 
int stack_type::count()
{
    cout << "Количество элементов в стеке: " << elems << endl;
    return elems;
};
 
int stack_type::show()
{
    cout << "Элементы стека:" << endl;
    for (int i = 0; i<elems; i++)
    {
        cout << stck[i] << endl;
    }
    return 1;
};
 
int stack_type::clear()
{
    elems = 0;
    cout << "Стек очищен" << endl;
    return 1;
};
Source1.cpp
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
#include <iostream>
using namespace std;
 
#include "header.h"
 
int main()
{
 
    setlocale(LC_ALL, "Russian");
 
    stack_type stack_1;
    int b;
    if (stack_1.number_of_elem > 0)
    {
        cout << "Введите значения элементов:" << endl;
        for (int i = 0; i<stack_1.number_of_elem; i++)
        {
            cin >> b;
            stack_1.push(b);
        };
        stack_1.show();
    }
    stack_1.pop();
    stack_1.back();
    stack_1.count();
    stack_1.show();
    stack_1.clear();
    return 1;
}
Header.h
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
#ifndef HEADER_H
#define HEADER_H
 
const int SIZE = 100;
 
class stack_type
{
public:
    
    stack_type();
    ~stack_type();
 
private:
    int stck[SIZE];
    int elems;
    int number_of_elem;
 
    void push(int b);
    int pop();
    int back();
    int count();
    int show();
    int clear();
};
 
#endif HEADER_H
Вот из-за этого Private в заголовочном файле выходит 9 ошибок типа:
Ошибка C2248 stack_type::Push: невозможно обратиться к private член, объявленному в классе "stack_type"
Ошибка C2248 stack_type::Pop: невозможно обратиться к private член, объявленному в классе "stack_type"
Ошибка C2248 stack_type::back: невозможно обратиться к private член, объявленному в классе "stack_type"
Ошибка C2248 stack_type::show: невозможно обратиться к private член, объявленному в классе "stack_type"
Ошибка C2248 stack_type::number_of_elem: невозможно обратиться к private член, объявленному в классе "stack_type"

И так далее все, что объявлено в Source1.cpp

Без Private же все отлично работает,так бы и оставил,но нужно обязательно с ним (типа как конструктор по умолчанию использовать)

Программированием только начал заниматься,поэтому не ругайте сильно
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.06.2016, 23:43
Ответы с готовыми решениями:

не могу разобраться с ошибкой
Нарушение прав доступа при записи &quot;0x001a0fc0&quot;. не могу понять где ошибка. программа на рекурсию #include &quot;stdafx.h&quot; ...

Не могу разобраться с ошибкой
Всю голову переломал почему он ругается на cout в 11 строке. Подскажите пожалуйста. #include &lt;iostream.h&gt; #include...

Не могу разобраться с ошибкой
Программа ханойские башни, нужно что бы выводил графически. Но пишет вот такую ошибку Ошибка 1 error C1083: Не удается открыть файл...

5
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
03.06.2016, 00:07
В number_of_elem из внешнего кода не лезть, завести вместо этого метод size возвращающий number_of_elem. Для остального:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class stack_type
{
public:
    
    stack_type();
    ~stack_type();
 
    void push(int b);
    int pop();
    int back();
    int count();
    int show();
    int clear();
private:
    int stck[SIZE];
    int elems;
    int number_of_elem;
 };
0
0 / 0 / 0
Регистрация: 09.06.2015
Сообщений: 6
03.06.2016, 00:22  [ТС]
Renji, Спасибо за ответ
Но что-то не очень понял по поводу number_of_elem(
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
03.06.2016, 00:29
Цитата Сообщение от Infostyle Посмотреть сообщение
Но что-то не очень понял по поводу number_of_elem(
Во-первых, если обращаться к number_of_elem напрямую, его можно случайно изменить (if(stack.number_of_elem = 1234)...). А если вы сделаете метод size(), то от таких грабель застрахуетесь.
Во-вторых, традиция такая - если уж делать методы, то делать через эти методы все. В том числе и чтение полей класса. Хотя, конечно, от традиции можно и отступить, если сильно в хозяйстве мешает.
0
0 / 0 / 0
Регистрация: 09.06.2015
Сообщений: 6
03.06.2016, 00:37  [ТС]
Renji, Как реализовать то этот метод?) Просто ошибка осталась актуальна,конечно значительно меньше,но осталась, с этим number_of_elem
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
03.06.2016, 00:39
У вас ошибка потому что вы пытаетесь читать number_of_elem из кода не являющегося методом stack_type. А private именно это и запрещает. Поставить
C++
1
int size()const{return number_of_elem;}
До private: и все stack.number_of_elem поменять на stack.size().
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.06.2016, 00:39
Помогаю со студенческими работами здесь

Никак не могу разобраться с ошибкой.
Задание: Имеются числа х1,х2,...,хn.Расставить их в таблице размером (nхn) так,чтобы в каждой строке и в каждом столбце каждое число...

Не могу разобраться с ошибкой в проге
#include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;ctype.h&gt; #define C 262 #define D 294 #define E 330 ...

Создайте класс, имитирующий работу биллинговой системы сотового оператора (Не могу разобраться с ошибкой)
вот текст программы Создайте класс, имитирующий работу биллинговой системы сотового оператора. Объектом данного класса является...

Не могу разобраться с ошибкой 13
Существует не сложная база данных, состоящая из 5 таблиц. Одна таблица главная &quot;Xoz&quot;, и от нее идут связи к другим. К 2-м из...

Не могу разобраться с ошибкой!
Выводит ошибку в этом коде на 5й строке. procedure TForm1.Button4Click(Sender: TObject); label 200; begin for i:=n downto 230 ...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru