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

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

Войти
Регистрация
Восстановить пароль
 
RayPas
2 / 0 / 0
Регистрация: 18.01.2013
Сообщений: 370
#1

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

22.02.2014, 19:37. Просмотров 210. Ответов 7
Метки нет (Все метки)

Если у меня есть классы EngWords и RusWords,в каждом определены методы ввода строк.
И задание сложить, сравнить эти строки, то я должен создавать дружественные функции или вообще отдельный класс, чтоб имел доступ к объектам и класса EngWords и соответсвенно RusWords?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
6242 / 5845 / 1891
Регистрация: 18.12.2011
Сообщений: 14,972
Завершенные тесты: 1
22.02.2014, 19:45     Как грамотно реализовать доступ к классам EngWords и RusWords #2
1. Использовать дружественную функцию
C++
1
bool Equal(const EngWords&,const RusWords&);
2. Если у классов есть функции, возвращающие значение строки,
то функция не обязана быть дружественной,
просто сравнивайте возвращенные значения.
RayPas
2 / 0 / 0
Регистрация: 18.01.2013
Сообщений: 370
22.02.2014, 19:50  [ТС]     Как грамотно реализовать доступ к классам EngWords и RusWords #3
ну я еще не упомянул, что это производный классы, дружественную я для них в базовом долзжен описать?
zss
Модератор
Эксперт С++
6242 / 5845 / 1891
Регистрация: 18.12.2011
Сообщений: 14,972
Завершенные тесты: 1
22.02.2014, 20:39     Как грамотно реализовать доступ к классам EngWords и RusWords #4
Дружественность не наследуется.
Объявляете ее во всех классах.
RayPas
2 / 0 / 0
Регистрация: 18.01.2013
Сообщений: 370
22.02.2014, 20:41  [ТС]     Как грамотно реализовать доступ к классам EngWords и RusWords #5
почему когда обяъявляю в файле .h friend void Compare(...) все нормально, а когда описываю ее уже в .cpp подчеркивает и говорит, что имя Compare не явл-ся членом класса...и friend в .cpp не дает написать...
zss
Модератор
Эксперт С++
6242 / 5845 / 1891
Регистрация: 18.12.2011
Сообщений: 14,972
Завершенные тесты: 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
2 / 0 / 0
Регистрация: 18.01.2013
Сообщений: 370
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++ Как грамотно сконвертировать float в std::wstring?
C++ Как грамотно подключать заголовочные файлы?
Как грамотно описать следующие команды C++
Как грамотно прорефакторить? C++
Как грамотно организовать код? C++

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

Или воспользуйтесь поиском по форуму:
zss
Модератор
Эксперт С++
6242 / 5845 / 1891
Регистрация: 18.12.2011
Сообщений: 14,972
Завершенные тесты: 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
Ответ Создать тему
Опции темы

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