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

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

Войти
Регистрация
Восстановить пароль
 
 
Kib-Rayker
 Аватар для Kib-Rayker
0 / 0 / 0
Регистрация: 14.04.2011
Сообщений: 9
18.09.2011, 22:00     Доступ объектов класса #1
Нужно чтобы внутренние объекты класса были доступны функциям в файле с классом, но не доступны из других файлов. Такое вообще возможно? Если да, то расскажите как это сделать, плз.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryS
Модератор
6413 / 4879 / 448
Регистрация: 14.02.2011
Сообщений: 16,180
18.09.2011, 22:01     Доступ объектов класса #2
private ???
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
18.09.2011, 22:03     Доступ объектов класса #3
Цитата Сообщение от Kib-Rayker Посмотреть сообщение
Нужно чтобы внутренние объекты класса были доступны функциям в файле с классом, но не доступны из других файлов. Такое вообще возможно? Если да, то расскажите как это сделать, плз.
C++
1
2
3
4
5
6
class node{
      private:
            //объекты класса были доступны функциям в файле с классом
      public:
            ...........
}
Kib-Rayker
 Аватар для Kib-Rayker
0 / 0 / 0
Регистрация: 14.04.2011
Сообщений: 9
18.09.2011, 22:10  [ТС]     Доступ объектов класса #4
сори, но если private, то как к ним обращаться из других функций.
a.x если х под private?
ValeryS
Модератор
6413 / 4879 / 448
Регистрация: 14.02.2011
Сообщений: 16,180
18.09.2011, 22:14     Доступ объектов класса #5
каких других функций
методы класса увидят все члены
не методы ни как
объясни что ты хочешь
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
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
 Аватар для 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
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
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
 Аватар для 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
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
18.09.2011, 22:42     Доступ объектов класса #10
Цитата Сообщение от Kib-Rayker Посмотреть сообщение
невозможно обратиться к private член объявленному в классе "bigch"
на то она и приват
ValeryS
Модератор
6413 / 4879 / 448
Регистрация: 14.02.2011
Сообщений: 16,180
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
 Аватар для Kib-Rayker
0 / 0 / 0
Регистрация: 14.04.2011
Сообщений: 9
18.09.2011, 22:47  [ТС]     Доступ объектов класса #12
alkagolik,
а мне надо чтобы из этого файла было доступно а из других нет
ValeryS
Модератор
6413 / 4879 / 448
Регистрация: 14.02.2011
Сообщений: 16,180
18.09.2011, 22:47     Доступ объектов класса #13
Цитата Сообщение от Kib-Rayker Посмотреть сообщение
как тогда сделать так чтобы из других файлов обратиться было нельзя
не подключай include файл с классом и все
но у тебя подход не верный
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
18.09.2011, 22:48     Доступ объектов класса #14
Цитата Сообщение от Kib-Rayker Посмотреть сообщение
т.е. доступно из любого места
понял теперь тебя. В ООП сам плаваю, почитай protected. сам впервые открыл мертвого страуса, знакомлюсь понемногу.
ValeryS
Модератор
6413 / 4879 / 448
Регистрация: 14.02.2011
Сообщений: 16,180
18.09.2011, 22:52     Доступ объектов класса #15
Цитата Сообщение от Kib-Rayker Посмотреть сообщение
а мне надо чтобы из этого файла было доступно а из других нет
зачем????

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

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

Добавлено через 3 минуты
Цитата Сообщение от ValeryS Посмотреть сообщение
а почему???
что мешает её сделать методом класса
то что функция складывает два объекта одного класса
обычное же
C++
1
с = a+b
вне классов
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
18.09.2011, 22:59     Доступ объектов класса #17
Цитата Сообщение от Kib-Rayker Посмотреть сообщение
У меня проблема с доступом из функций из одного с классом файла (должен быть открыт) и из других файлов (должен быть закрыт)
что мешает скомпилировать разные программы и вызывать одну из другой?
Kib-Rayker
 Аватар для Kib-Rayker
0 / 0 / 0
Регистрация: 14.04.2011
Сообщений: 9
18.09.2011, 23:01  [ТС]     Доступ объектов класса #18
alkagolik
не понял
я собираюсь использовать этот класс не в одной програмке и далеко не единожды
ValeryS
Модератор
6413 / 4879 / 448
Регистрация: 14.02.2011
Сообщений: 16,180
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++ Счетчик объектов класса
C++ Инициализация объектов класса
Массив объектов класса C++
Массив объектов класса, отладка, доступ к полям элемента массива C++
Массив объектов класса C++

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

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

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