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

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

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

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

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

Здраствуйте, есть класс Врач, Пациент. Есть френд функция с этими классами. Все рабоатет. Создаю новый клас Терапевт, который наследуется от класса Врач. Создаю новую френд фукцию, аналогичну первой. Не работает. Не могу понять в чем проблема? Вопрос глупый, но может нельзя создавать френд фунции для наследованых классов?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.12.2012, 20:07
Здравствуйте! Я подобрал для вас темы с ответами на вопрос С++ наследование(при наследовании не работает дружественная функция) (C++):

Не работает конструктор при наследовании - C++
#include <iostream> using namespace std; #include <locale> #include <time.h> #include <windows.h> class TArray { ...

Как работает деструктор и конструктор при наследовании? - C++
Возникла проблемка, не пойму, как работает деструктор и конструктор в моей программе. Я не вызываю явно конструктор, как в этом случае...

При множественном наследовании не работает getline(std::cin, ?) - C++
Изучаю множественное наследование, так вот, нужно ввести два слова, но программа просто пропускает getline (std::cin, ?) Когда так при...

как сделать чтобы дружественная функция классу принимал ааргумент типа "класс" который при создании ничем не инициализирован? - C++
Друзья! Вот код, компилятор ругается на строку ff (f3); В общем переменную f3 необходимо объявлять без параметров, а потом передавать её...

Дружественная функция - C++
Хочу сделать вычисление площади как дружественную функцию, начал описывать, дальше догнать не могу как кодить. Подскажите? #include...

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Nixy
ComfyMobile
400 / 281 / 8
Регистрация: 24.07.2012
Сообщений: 916
23.12.2012, 20:19 #2
а покажите код,как вы это делаете
0
Герц
524 / 341 / 4
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
23.12.2012, 20:20 #3
Друзья не переходят по наследству, очевидно же.
0
Nixy
ComfyMobile
400 / 281 / 8
Регистрация: 24.07.2012
Сообщений: 916
23.12.2012, 20:38 #4
а он не передавал, он переопределить ее пытается в наследнике, как я понял
0
HUGO_GO
2 / 2 / 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
0
Nixy
ComfyMobile
400 / 281 / 8
Регистрация: 24.07.2012
Сообщений: 916
23.12.2012, 21:11 #6
а зачем вы используете дружественные функции? и по этим кускам кода я не вижу ошибки
0
HUGO_GO
2 / 2 / 0
Регистрация: 15.03.2012
Сообщений: 13
23.12.2012, 21:30  [ТС] #7
Также о том подумал, что надо обойтись без дружественных функций. Думаю, аксесорами полусить занчение атрибутор однрого класса и передать другому.
0
Nixy
ComfyMobile
400 / 281 / 8
Регистрация: 24.07.2012
Сообщений: 916
23.12.2012, 21:36 #8
так в чем суть проблемы, если у вас есть приватные поля и вы кним хотите обратится, используйте get'еры и set'еры
дружественная функций нужна для того чтоб без привязки к классу обращатся к его приватным полям
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.12.2012, 21:36
Привет! Вот еще темы с ответами:

дружественная функция... - C++
есть вот такой код: #include &lt;iostream.h&gt; #include &lt;math.h&gt; #include &lt;conio.h&gt; class plane { float...

Дружественная функция - C++
описать классы автомобиль и маршрут. Использовать дружественную функцию определить количество потраченного топлива и время на преодоление...

Дружественная функция - C++
#include &lt;iostream&gt; #include &lt;math.h&gt; using namespace std; class massiv { int len,*p_mas; public : massiv() {} massiv...

Дружественная 2-м классам функция. - C++
Код программы: #include &lt;iostream.h&gt; class matrix; class vector{ int size; int* vec; public: vector(int sz = 2){vec...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
23.12.2012, 21:36
Ответ Создать тему
Опции темы

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