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

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

Войти
Регистрация
Восстановить пароль
 
HUGO_GO
0 / 0 / 0
Регистрация: 15.03.2012
Сообщений: 13
#1

С++ наследование(при наследовании не работает дружественная функция) - C++

23.12.2012, 20:07. Просмотров 662. Ответов 7
Метки нет (Все метки)

Здраствуйте, есть класс Врач, Пациент. Есть френд функция с этими классами. Все рабоатет. Создаю новый клас Терапевт, который наследуется от класса Врач. Создаю новую френд фукцию, аналогичну первой. Не работает. Не могу понять в чем проблема? Вопрос глупый, но может нельзя создавать френд фунции для наследованых классов?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.12.2012, 20:07     С++ наследование(при наследовании не работает дружественная функция)
Посмотрите здесь:
Не работает конструктор при наследовании C++
Как работает деструктор и конструктор при наследовании? C++
C++ При множественном наследовании не работает getline(std::cin, ?)
как сделать чтобы дружественная функция классу принимал ааргумент типа "класс" который при создании ничем не инициализирован? C++
C++ Дружественная функция
C++ Дружественная функция
C++ Дружественная функция
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nixy
ComfyMobile
400 / 281 / 8
Регистрация: 24.07.2012
Сообщений: 916
23.12.2012, 20:19     С++ наследование(при наследовании не работает дружественная функция) #2
а покажите код,как вы это делаете
Герц
524 / 341 / 4
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
23.12.2012, 20:20     С++ наследование(при наследовании не работает дружественная функция) #3
Друзья не переходят по наследству, очевидно же.
Nixy
ComfyMobile
400 / 281 / 8
Регистрация: 24.07.2012
Сообщений: 916
23.12.2012, 20:38     С++ наследование(при наследовании не работает дружественная функция) #4
а он не передавал, он переопределить ее пытается в наследнике, как я понял
HUGO_GO
0 / 0 / 0
Регистрация: 15.03.2012
Сообщений: 13
23.12.2012, 20:59  [ТС]     С++ наследование(при наследовании не работает дружественная функция) #5
Вы парвы, код большой, сложно показать

Добавлено через 9 минут
Класс Врач
Doctor.h
C++
1
2
class Patient;
friend void fromP2DS(Doctor &, Patient &);//from patient to  doctor
Doctor.cpp
C++
1
2
3
4
5
6
7
8
9
void fromP2DS(Doctor &d, Patient &p){
        list<Symptom>::iterator l = p.symptom_p.begin();
    while (l != p.symptom_p.end())
    {
        cout<<" "<<l->getNameSymptomm()<<",";
        d.s_p.push_back(l->getnumSymptomm()); 
        l++;     
    }
    cout<<endl;
Patient.h
C++
1
friend void fromP2DS(Doctor &, Patient &); //first visit a doctor
Terapevt.h
C++
1
2
3
4
5
6
7
8
class Terapevt :  public Cardiologist, public Gastroenterologist {
public :
    Terapevt()  {cout<<"constructor Terapevt is created."<<endl;} ;
    std::string spetsyfication;
private :
    void creat_diagnos1(void);//return diagnos
    void NotBigProblem(void);
};
Cardiologist и Gastroenterologist - виртуально наследуются от Врача(Doctor)

Добавлено через 5 минут
и в терапевте
C++
1
friend void fromP2TerS(Terapevt &, Patient &); //first visit a doctor
которая будет делать тоже самое что и
friend void fromP2DS(Doctor &, Patient &); //first visit a doctor
Nixy
ComfyMobile
400 / 281 / 8
Регистрация: 24.07.2012
Сообщений: 916
23.12.2012, 21:11     С++ наследование(при наследовании не работает дружественная функция) #6
а зачем вы используете дружественные функции? и по этим кускам кода я не вижу ошибки
HUGO_GO
0 / 0 / 0
Регистрация: 15.03.2012
Сообщений: 13
23.12.2012, 21:30  [ТС]     С++ наследование(при наследовании не работает дружественная функция) #7
Также о том подумал, что надо обойтись без дружественных функций. Думаю, аксесорами полусить занчение атрибутор однрого класса и передать другому.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.12.2012, 21:36     С++ наследование(при наследовании не работает дружественная функция)
Еще ссылки по теме:
C++ Дружественная функция
Дружественная 2-м классам функция. C++
C++ Не вызывается дружественная функция
C++ Дружественная функция класса
Дружественная функция. Графы C++

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

Или воспользуйтесь поиском по форуму:
Nixy
ComfyMobile
400 / 281 / 8
Регистрация: 24.07.2012
Сообщений: 916
23.12.2012, 21:36     С++ наследование(при наследовании не работает дружественная функция) #8
так в чем суть проблемы, если у вас есть приватные поля и вы кним хотите обратится, используйте get'еры и set'еры
дружественная функций нужна для того чтоб без привязки к классу обращатся к его приватным полям
Yandex
Объявления
23.12.2012, 21:36     С++ наследование(при наследовании не работает дружественная функция)
Ответ Создать тему
Опции темы

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