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

Как грамотно реализовать доступ к классам EngWords и RusWords - C++

Восстановить пароль Регистрация
 
RayPas
 Аватар для RayPas
2 / 0 / 0
Регистрация: 18.01.2013
Сообщений: 367
22.02.2014, 19:37     Как грамотно реализовать доступ к классам EngWords и RusWords #1
Если у меня есть классы EngWords и RusWords,в каждом определены методы ввода строк.
И задание сложить, сравнить эти строки, то я должен создавать дружественные функции или вообще отдельный класс, чтоб имел доступ к объектам и класса EngWords и соответсвенно RusWords?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.02.2014, 19:37     Как грамотно реализовать доступ к классам EngWords и RusWords
Посмотрите здесь:

C++ объясните грамотно как это работает
C++ как грамотно удалить элементы в векторе?
как грамотно конвертировать? C++
C++ MinGW+MSYS - как грамотно пользоваться?
C++ Как грамотно составить агроритм?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5956 / 5561 / 1788
Регистрация: 18.12.2011
Сообщений: 14,210
Завершенные тесты: 1
22.02.2014, 19:45     Как грамотно реализовать доступ к классам EngWords и RusWords #2
1. Использовать дружественную функцию
C++
1
bool Equal(const EngWords&,const RusWords&);
2. Если у классов есть функции, возвращающие значение строки,
то функция не обязана быть дружественной,
просто сравнивайте возвращенные значения.
RayPas
 Аватар для RayPas
2 / 0 / 0
Регистрация: 18.01.2013
Сообщений: 367
22.02.2014, 19:50  [ТС]     Как грамотно реализовать доступ к классам EngWords и RusWords #3
ну я еще не упомянул, что это производный классы, дружественную я для них в базовом долзжен описать?
zss
Модератор
Эксперт С++
 Аватар для zss
5956 / 5561 / 1788
Регистрация: 18.12.2011
Сообщений: 14,210
Завершенные тесты: 1
22.02.2014, 20:39     Как грамотно реализовать доступ к классам EngWords и RusWords #4
Дружественность не наследуется.
Объявляете ее во всех классах.
RayPas
 Аватар для RayPas
2 / 0 / 0
Регистрация: 18.01.2013
Сообщений: 367
22.02.2014, 20:41  [ТС]     Как грамотно реализовать доступ к классам EngWords и RusWords #5
почему когда обяъявляю в файле .h friend void Compare(...) все нормально, а когда описываю ее уже в .cpp подчеркивает и говорит, что имя Compare не явл-ся членом класса...и friend в .cpp не дает написать...
zss
Модератор
Эксперт С++
 Аватар для zss
5956 / 5561 / 1788
Регистрация: 18.12.2011
Сообщений: 14,210
Завершенные тесты: 1
22.02.2014, 20:49     Как грамотно реализовать доступ к классам EngWords и RusWords #6
Слово friend пишется только при объявлении внутри класса:
C++
1
2
3
4
5
6
7
class A
{
int n;
public:
friend int f(const A&);
};
int f(const A& a){return a.n;}
RayPas
 Аватар для RayPas
2 / 0 / 0
Регистрация: 18.01.2013
Сообщений: 367
22.02.2014, 21:00  [ТС]     Как грамотно реализовать доступ к классам EngWords и RusWords #7
ну вот если я в .h объявляю там почему даже cout не читает( а оно мне в теле этой функции нужно), а вот при описании ее в .cpp пишет что эта функция не член класса. в файле .h же только прототип должен быть
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.02.2014, 21:46     Как грамотно реализовать доступ к классам EngWords и RusWords
Еще ссылки по теме:

C++ Реализовать доступ к закрытой переменной
C++ как разделить код по классам
как в MFC грамотно обработать деление на 0? C++

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

Или воспользуйтесь поиском по форуму:
zss
Модератор
Эксперт С++
 Аватар для zss
5956 / 5561 / 1788
Регистрация: 18.12.2011
Сообщений: 14,210
Завершенные тесты: 1
22.02.2014, 21:46     Как грамотно реализовать доступ к классам EngWords и RusWords #8
Тогда В h файле должны идти сначала предварительные объявления класса:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
class  EngWords;
class  RusWords;
bool Equal(const EngWords&,const RusWords&);
class  EngWords
{
....
friend bool Equal(const EngWords&,const RusWords&);
};
class  RusWords
{
....
friend bool Equal(const EngWords&,const RusWords&);
};
Yandex
Объявления
22.02.2014, 21:46     Как грамотно реализовать доступ к классам EngWords и RusWords
Ответ Создать тему
Опции темы

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