0 / 0 / 0
Регистрация: 14.04.2011
Сообщений: 9
1

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

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

Author24 — интернет-сервис помощи студентам
Нужно чтобы внутренние объекты класса были доступны функциям в файле с классом, но не доступны из других файлов. Такое вообще возможно? Если да, то расскажите как это сделать, плз.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.09.2011, 22:00
Ответы с готовыми решениями:

Массив объектов класса, отладка, доступ к полям элемента массива
Доброго времени! Создал класс с полем char и int. Person.h #ifndef PERSON_H #define PERSON_H...

Массив объектов одного класса как поле другого класса
Доброе время суток. Мне тут в универе задали лабу, нужно создать класс полем которого будет массив...

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

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

23
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,512
18.09.2011, 23:25 21
Author24 — интернет-сервис помощи студентам
Держи

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class tstClass
{
public:
    tstClass(void);
    ~tstClass(void);
public :
int operator+(const tstClass& tC )
    {
     return xz+tC.xz;   
    }
private:
    int xz;
    
};
.......................................
tstClass a;
tstClass b;
int k=a+b;
переопределить ты можешь все опрераторы
хотя это в корне не верно
оператор должен и принимать и возвращать класс
например сложить две строки вернется строка
сложить две матрицы вернется матрица
пересмотри свою архитектуру
проще и безопасней пользоваться Set..... Get.....
Например в моем примере
C++
1
2
3
4
man m,n;
m.SetAge(34);
n.SetAge(25);
int g=m.GetAge()+n.GetAge();
Этим ты обезопасишь себя от неправильно введенных данных изменения данных когда не нужно и прочих косяков
1
0 / 0 / 0
Регистрация: 14.04.2011
Сообщений: 9
18.09.2011, 23:32  [ТС] 22
Не совсем ответ на вопрос, но спасибо.
Буду разбираться.
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,512
18.09.2011, 23:45 23
для спасибы кнопка есть

Добавлено через 3 минуты
О друзьях класса

Обычно единственный способ, с помощью которого ваши программы могут обращаться к частным элементам класса, заключается в использовании интерфейсных функций. В зависимости от использования объектов программы иногда может быть удобным (или более эффективным с точки зрения скорости вычислений) разрешить одному классу обращаться к частным элементам другого. Для этого вы должны информировать компилятор C++, что класс является другом (friend). Компилятор, в свою очередь, позволит классу-другу обращаться к частным элементам требуемого класса. Чтобы объявить класс другом, поместите ключевое слово friend и имя класса-друга в секцию public определения класса, как показано ниже:

class abbott

{
public:
friend costello;
// Общие элементы
private:
// Частные элементы
};
http://www.programmersclub.ru/28/

Добавлено через 3 минуты
класса, вы обеспечиваете классу-другу доступ к частным элементам данных этого другого класса. Вы также знаете и то, что чем больше доступа к частным данным класса, тем больше шансов на внесение ошибок в программу. Следовательно, если доступ к частным данным другого класса необходим только нескольким функциям класса, C++ позволяет указать, что только определенные функции дружественного класса будут иметь доступ к частным элементам. Предположим, например, что класс librarian, представленный в предыдущей программе, содержит много разных функций. Однако предположим, что только функциям change_catalog и get_catalog необходим доступ к частным элементам класса book. Внутри определения класса book мы можем ограничить доступ к частным элементам только этими двумя функциями, как показано ниже:

class book

{
public:
book(char *, char *, char *);
void show_book(void);
friend char *librarian::get_catalog(book);
friend void librarian: :change_catalog( book *, char *);
private:
char title[64];
char author[ 64 ];
char catalog[64];
};

Как видите, операторы friend содержат полные прототипы всех дружественных функций, которые могут напрямую обращаться к частным элементам.

О функциях-друзьях

Если ваша программа использует друзей для доступа к частным данным класса, вы можете ограничить количество функций-элементов класса-друга, который может обращаться к частным данным, используя дружественные функции. Для объявления функции-друга укажите ключевое слово friend, за которым следует полный прототип, как показано ниже:

public:
friend class_name::function_name(parameter types);

Только функции-элементы, указанные как друзья, могут напрямую обращаться к частным элементам класса, используя оператор точку.
от туда же
1
0 / 0 / 0
Регистрация: 07.09.2011
Сообщений: 4
20.09.2011, 17:56 24
Доброго времени суток. Столкнулся со следующей проблемой: есть 2 класса
C++
1
2
3
4
5
6
7
8
9
10
class One
{
...
}
 
class Two
{
One m_one;
...
}
А мне необходимо из первого класса вызвать некоторые методы второго. Как это сделать?
0
20.09.2011, 17:56
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.09.2011, 17:56
Помогаю со студенческими работами здесь

Массив объектов класса. Печать строк-членов класса.
подскажите, как распечатать строки? #include "myString.h" #include <iostream> #define stop...

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

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

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


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

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

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