С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

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

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

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

Построение описания класса, создание и уничтожение объектов этого класса - C++
Построить описание класса, содержащего информацию о почтовом адресе организации. Предусмотреть возможность раздельного изменения...

Реализовать подсчет количества объектов класса, используя статическую переменную-член класса - C++
как реализовать подсчет количества объектов класса (используя статическую переменную-член класса), а также статическую функцию, которая...

Массив объектов класса. Печать строк-членов класса. - C++
подскажите, как распечатать строки? #include "myString.h" #include <iostream> #define stop __asm nop void main() { ...

Массив объектов класса как член другого класса - C++
Здравствуйте. У меня тут возникла проблемка #include "main.h" class player { public: player(); player(char*); ...

Инициализация объектов класса в конструкторе другого класса - C++
У меня есть класс Subscriber,в котором есть несколько объектов другого класса Date,мне нужно,чтобы при создании Subscriber объекты класса...

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

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

Цитата Сообщение от alkagolik Посмотреть сообщение
почитай protected
в основном нужен для наследования
в не класса так же обломает
есть еще такие дружественные (friend) классы
объяви в файле класс другом и получишь доступ
0
18.09.2011, 22:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.09.2011, 22:52
Привет! Вот еще темы с ответами:

Как получить доступ к методам класса, который содержится в векторе класса - C++
Пишу дерево с любым количеством наследников. В классе Thread содержится вектор классов Thread. При попытке просмотра первого элемента в...

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

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

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


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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