Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Kib-Rayker
0 / 0 / 0
Регистрация: 14.04.2011
Сообщений: 9
#1

Доступ объектов класса - C++

18.09.2011, 22:00. Просмотров 990. Ответов 23
Метки нет (Все метки)

Нужно чтобы внутренние объекты класса были доступны функциям в файле с классом, но не доступны из других файлов. Такое вообще возможно? Если да, то расскажите как это сделать, плз.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.09.2011, 22:00     Доступ объектов класса
Посмотрите здесь:

Массив объектов класса, отладка, доступ к полям элемента массива - C++
Доброго времени! Создал класс с полем char и int. Person.h #ifndef PERSON_H #define PERSON_H //#include <iostream> using...

Доступ к членам класса класса - C++
Всем привет. Вобщем есть базовый класс, и два производных. Пользователь вводит координаты нужно проверить факт пересечения одной фигуры с...

Массив объектов класса - C++
Всем привет! Я не так давно познакомился с классами в C++, прочитав несколько статей по этой теме решил попрактиковаться. Есть задача:...

Массив объектов класса - C++
Добрый день. При попытки создать массив объектов класса ошибка. Как в дальнейшем динамически изменять размер массива (добавлять-удалять...

Список из объектов класса - C++
Здравствуйте, возник вопрос- Как правильно сделать двунаправленный список( не циклический) из объектов класса. Как реализовать функции для...

Количество объектов класса - C++
недавно подцепил тут где то этот вопрос и меня что называется зацепило... думал думал так и не смог придумать как сделать счетчик созданных...

Массив объектов класса - C++
Товарищи, доброго времени суток! Помогите, пож-та, найти ошибку в коде, всё перепроверил, не понимаю всё равно. Суть проги такая - 5...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryS
Модератор
6537 / 5003 / 460
Регистрация: 14.02.2011
Сообщений: 16,636
18.09.2011, 22:01     Доступ объектов класса #2
private ???
alkagolik
Заблокирован
18.09.2011, 22:03     Доступ объектов класса #3
Цитата Сообщение от Kib-Rayker Посмотреть сообщение
Нужно чтобы внутренние объекты класса были доступны функциям в файле с классом, но не доступны из других файлов. Такое вообще возможно? Если да, то расскажите как это сделать, плз.
C++
1
2
3
4
5
6
class node{
      private:
            //объекты класса были доступны функциям в файле с классом
      public:
            ...........
}
Kib-Rayker
0 / 0 / 0
Регистрация: 14.04.2011
Сообщений: 9
18.09.2011, 22:10  [ТС]     Доступ объектов класса #4
сори, но если private, то как к ним обращаться из других функций.
a.x если х под private?
ValeryS
Модератор
6537 / 5003 / 460
Регистрация: 14.02.2011
Сообщений: 16,636
18.09.2011, 22:14     Доступ объектов класса #5
каких других функций
методы класса увидят все члены
не методы ни как
объясни что ты хочешь
alkagolik
Заблокирован
18.09.2011, 22:16     Доступ объектов класса #6
C++
1
2
3
4
5
6
7
8
9
class node{
     private:
         int x;
     public:
         int func(int tmp){
                x = tmp;
                return x * x;
         }
};
Kib-Rayker
0 / 0 / 0
Регистрация: 14.04.2011
Сообщений: 9
18.09.2011, 22:27  [ТС]     Доступ объектов класса #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class bigch
{
...
private:
int s
}
 
 
bigch sum1(bigch a, bigch b)
{
...
    bigch c;
    a.s = 1;
    return c;
}
пишет ошибку при обращении к a.s

Добавлено через 6 минут
alkagolik,
функция находится вне класса
alkagolik
Заблокирован
18.09.2011, 22:27     Доступ объектов класса #8
Цитата Сообщение от Kib-Rayker Посмотреть сообщение
пишет ошибку при обращении к a.s
у тебя сразу видно ошибки (даже не видя кода). научись читать сообщения компилятора, и смотреть на что он указывает
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
 
class node{
    private:
        int x;
    public:
        int func(int tmp){
            x = tmp;
            return x * x;
        }
};
 
int main(){
    int x = 4;
    node y;
    std::cout << y.func(x);
    return 0;
}
вывод
Код
$ ./tmp 
16
Kib-Rayker
0 / 0 / 0
Регистрация: 14.04.2011
Сообщений: 9
18.09.2011, 22:37  [ТС]     Доступ объектов класса #9
не обращай внимания на синтаксис.
ошибка :
невозможно обратиться к private член объявленному в классе "bigch"

как тогда сделать так чтобы из других файлов обратиться было нельзя

а int func(int tmp) ничего не меняет
т.к. это аналогично
C++
1
2
public:
int s;
т.е. доступно из любого места
alkagolik
Заблокирован
18.09.2011, 22:42     Доступ объектов класса #10
Цитата Сообщение от Kib-Rayker Посмотреть сообщение
невозможно обратиться к private член объявленному в классе "bigch"
на то она и приват
ValeryS
Модератор
6537 / 5003 / 460
Регистрация: 14.02.2011
Сообщений: 16,636
18.09.2011, 22:42     Доступ объектов класса #11
Цитата Сообщение от Kib-Rayker Посмотреть сообщение
пишет ошибку при обращении к a.s
разумеется и будет писать
политику ООП понимаешь
защищенные члены для того и придуманы чтобы никто не мог лазить
для этого создаются специальные методы (или не создаются если за пределами класса член не должен быть виден)
приведу классический пример
класс человек
член возраст
C++
1
2
3
4
5
6
7
8
class man
{
public age;
}
..............
man m;
m.age=-200;//компилятор пропустит эту байду 
                 // но мы то с вами понимаем что возраст отрицательным не может быть
теперь правильный ответ
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class man
{
private age;
public:
 int GetAge(){return age;}
void SetAge(int _age)
 {
   if(_age>=0 && _age<100)// горцев в расчет не берем
     age=_age;
 }
 
}
..............
man m;
m.age=-200;//компилятор не  пропустит это 
 
  m.SetAge(234);// компилятор пропустит но присвоения не будет
                       // не бывает таких долгожителей
m.SetAge(34);   // вот здесь все путем
printf("%d",m.GetAge()) // печатаем возраст
прочитай внимательно про классы и зачем они нужны
у тебя подход как к структуре
если тебе нужна сумма (разность) каких то членов
переопредели +(-)
Kib-Rayker
0 / 0 / 0
Регистрация: 14.04.2011
Сообщений: 9
18.09.2011, 22:47  [ТС]     Доступ объектов класса #12
alkagolik,
а мне надо чтобы из этого файла было доступно а из других нет
ValeryS
Модератор
6537 / 5003 / 460
Регистрация: 14.02.2011
Сообщений: 16,636
18.09.2011, 22:47     Доступ объектов класса #13
Цитата Сообщение от Kib-Rayker Посмотреть сообщение
как тогда сделать так чтобы из других файлов обратиться было нельзя
не подключай include файл с классом и все
но у тебя подход не верный
alkagolik
Заблокирован
18.09.2011, 22:48     Доступ объектов класса #14
Цитата Сообщение от Kib-Rayker Посмотреть сообщение
т.е. доступно из любого места
понял теперь тебя. В ООП сам плаваю, почитай protected. сам впервые открыл мертвого страуса, знакомлюсь понемногу.
ValeryS
Модератор
6537 / 5003 / 460
Регистрация: 14.02.2011
Сообщений: 16,636
18.09.2011, 22:52     Доступ объектов класса #15
Цитата Сообщение от Kib-Rayker Посмотреть сообщение
а мне надо чтобы из этого файла было доступно а из других нет
зачем????

Добавлено через 4 минуты
Цитата Сообщение от Kib-Rayker Посмотреть сообщение
функция находится вне класса
а почему???
что мешает её сделать методом класса

Цитата Сообщение от alkagolik Посмотреть сообщение
почитай protected
в основном нужен для наследования
в не класса так же обломает
есть еще такие дружественные (friend) классы
объяви в файле класс другом и получишь доступ
Kib-Rayker
0 / 0 / 0
Регистрация: 14.04.2011
Сообщений: 9
18.09.2011, 22:58  [ТС]     Доступ объектов класса #16
ValeryS
Нет ты не понял.
У меня проблема с доступом из функций из одного с классом файла (должен быть открыт) и из других файлов (должен быть закрыт)

Добавлено через 3 минуты
Цитата Сообщение от ValeryS Посмотреть сообщение
а почему???
что мешает её сделать методом класса
то что функция складывает два объекта одного класса
обычное же
C++
1
с = a+b
вне классов
alkagolik
Заблокирован
18.09.2011, 22:59     Доступ объектов класса #17
Цитата Сообщение от Kib-Rayker Посмотреть сообщение
У меня проблема с доступом из функций из одного с классом файла (должен быть открыт) и из других файлов (должен быть закрыт)
что мешает скомпилировать разные программы и вызывать одну из другой?
Kib-Rayker
0 / 0 / 0
Регистрация: 14.04.2011
Сообщений: 9
18.09.2011, 23:01  [ТС]     Доступ объектов класса #18
alkagolik
не понял
я собираюсь использовать этот класс не в одной програмке и далеко не единожды
ValeryS
Модератор
6537 / 5003 / 460
Регистрация: 14.02.2011
Сообщений: 16,636
18.09.2011, 23:02     Доступ объектов класса #19
Цитата Сообщение от Kib-Rayker Посмотреть сообщение
то что функция складывает два объекта одного класса
обычное же
исчо раз
Цитата Сообщение от ValeryS Посмотреть сообщение
переопредели +
сейчас накидаю пример

Добавлено через 31 секунду
Цитата Сообщение от Kib-Rayker Посмотреть сообщение
не понял
я собираюсь использовать этот класс не в одной програмке и далеко не единожды
Тем более
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.09.2011, 23:11     Доступ объектов класса
Еще ссылки по теме:

Массив объектов класса - C++
Здравствуйте, не могу разобраться как записать в массив объекты класса ObjectX. Подскажите пожалуйста. class ObjectX{ public: int...

Счетчик объектов класса - C++
Всем доброго времени суток. Изучая язык С++ по книге Лафоре столкнулся с задачей которую не могу решить (будет скриншот задачи) точнее не...

Вектор объектов класса - C++
Всем привет! Несколько недель назад я писал сюда по поводу одной задачи. Она заключается в том, чтобы реализовать класс &quot;Зоомагазин&quot; с...

Массив объектов класса - C++
class abc { public: int x,y; }; abc all; int main() { all.x=5; all.x=6;

Инициализация объектов класса - C++
Доброго всем времени суток! У Бьерн Страуструп увидел вот такую конструкцию class date { int month, day, year; ...


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

Или воспользуйтесь поиском по форуму:
Kib-Rayker
0 / 0 / 0
Регистрация: 14.04.2011
Сообщений: 9
18.09.2011, 23:11  [ТС]     Доступ объектов класса #20
Цитата Сообщение от ValeryS Посмотреть сообщение
переопредели +
я просто этого не умею
то есть ты хочешь сделать сложение для собственного класса, выглядещее с=a+b;?
Yandex
Объявления
18.09.2011, 23:11     Доступ объектов класса
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru