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

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

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

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

18.09.2011, 22:00. Просмотров 1041. Ответов 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
Kib-Rayker
0 / 0 / 0
Регистрация: 14.04.2011
Сообщений: 9
18.09.2011, 22:58  [ТС] #16
ValeryS
Нет ты не понял.
У меня проблема с доступом из функций из одного с классом файла (должен быть открыт) и из других файлов (должен быть закрыт)

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

Добавлено через 31 секунду
Цитата Сообщение от Kib-Rayker Посмотреть сообщение
не понял
я собираюсь использовать этот класс не в одной програмке и далеко не единожды
Тем более
0
Kib-Rayker
0 / 0 / 0
Регистрация: 14.04.2011
Сообщений: 9
18.09.2011, 23:11  [ТС] #20
Цитата Сообщение от ValeryS Посмотреть сообщение
переопредели +
я просто этого не умею
то есть ты хочешь сделать сложение для собственного класса, выглядещее с=a+b;?
0
ValeryS
Модератор
6679 / 5088 / 475
Регистрация: 14.02.2011
Сообщений: 17,071
18.09.2011, 23:25 #21
Держи

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
Kib-Rayker
0 / 0 / 0
Регистрация: 14.04.2011
Сообщений: 9
18.09.2011, 23:32  [ТС] #22
Не совсем ответ на вопрос, но спасибо.
Буду разбираться.
0
ValeryS
Модератор
6679 / 5088 / 475
Регистрация: 14.02.2011
Сообщений: 17,071
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
Degandr
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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.09.2011, 17:56
Привет! Вот еще темы с ответами:

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

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

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

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


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

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

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