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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 26, средняя оценка - 4.81
Andryushchenko
0 / 0 / 0
Регистрация: 11.08.2010
Сообщений: 29
#1

Friend Function - C++

11.08.2010, 12:29. Просмотров 3318. Ответов 23
Метки нет (Все метки)

Я не очень понимаю как пользаватса Friend функцыей

Class.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <stdio.h>
#include "iostream"
 
using namespace std;
class KBADPAT
{
public:
     double a;
public:
     double pr (KBADPAT L)
    {
         double P;
    P=a*4;
    return P;
    }
    double sq (KBADPAT L)
    {
        double S;
        S=a*a;
        return S;
    };
    KBADPAT (double _a)
    {
        a=_a;
    }
    void Show (KBADPAT L)
    {
        cout<<"Perimetr: "<<pr(L)<<endl;
        cout<<"Square: "<<sq(L)<<endl;
    }
    ~KBADPAT()
    {
    };
};
1.2.Cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include "stdafx.h"
#include "Class.h"
#include "conio.h"
 
 
int main()
{
    KBADPAT K(5);
    K.pr(K);
    K.Show(K);
    getch();
    return 0;
}
Как мне суда влепить friend функцыи подскажыте пожалусто ... (По заданию нужно)
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.08.2010, 12:29
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Friend Function (C++):

C:\Dev-Cpp\lib\vector.h `ostream' is neither function nor member function; cannot be declared friend - C++
выкидывает C:\Dev-Cpp\lib\vector.h `ostream' is neither function nor member function; cannot be declared friend при компиляции. что делать?

Friend function - C++
Нужно сделать функции Length и Angle френдовыми для другого класса. Как это запилить? Sect.h #include &lt;iostream&gt; #include &lt;math.h&gt; ...

friend function - C++
После добавления дружественной ф-ции sum( а она для сложения salary у человека, которого я выберу) класс перестал работать. Что у меня не...

friend function - C++
Помогите плз разобраться: Когда я делаю инкремент &quot;х&quot; через закрытые функции класса - все работает нормально, а когда через...

Friend function and Overload <<(>>) - C++
#include &lt;iostream&gt; using namespace std; class array{ private: unsigned int size; int *mas; public: array(unsigned...

Virtual friend function - C++
&lt;&lt;Виртуальный метод не может объявляться с модификатором static, но может быть объявлен как дружественная функция.&gt;&gt; Виртуальный метод...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Sekt
156 / 155 / 10
Регистрация: 29.04.2009
Сообщений: 637
11.08.2010, 13:47 #2
C++
1
2
3
4
5
class KBADPAT
{
friend void f();
};
void f();
Глобальная функция теперь является другом класса KBADPAT
0
Andryushchenko
0 / 0 / 0
Регистрация: 11.08.2010
Сообщений: 29
11.08.2010, 14:25  [ТС] #3
ее не особо понял) ет типо мне стоит описать:
а как френд фанкшен??
void f(); - зачем ет ? обясни пожалусто если не трудно
и как мне цеплять дальше ету функцыю как ею вобще ползьаватса зарание спс
0
Sekt
156 / 155 / 10
Регистрация: 29.04.2009
Сообщений: 637
11.08.2010, 18:21 #4
ключевое слово friend предназначено для взаимодействия нескольких классов/функций.
если void f();обозначена как friend- она является другом класса и имеет доступ ко всем его переменным как и сам класс с теми же правами доступа.
P.s выложите все задание.
0
ForEveR
В астрале
Эксперт С++
7972 / 4734 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
11.08.2010, 18:22 #5
Алсо, не следует злоупотреблять friend функциями и пихать их где не попадя. Это так, на всякий случай.
0
Andryushchenko
0 / 0 / 0
Регистрация: 11.08.2010
Сообщений: 29
12.08.2010, 10:17  [ТС] #6
Координати вершин, конструктор з параметрами, метод обчислення площини та периметра з виведенням результату, методи ініціювання та закриття графічного режиму, дружня функція побудови квадрата Описати клас, об’єкт; обчислити та вивести площу і периметр; візуалізувати фігуру, яку презентує об’єкт


P.S. делать в графическом режиме не нужно
0
ForEveR
В астрале
Эксперт С++
7972 / 4734 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
12.08.2010, 10:19 #7
Andryushchenko,

Не по теме:

Ну переводите ж вы на русский то задание...


Что вообще значит "Построения квадрата"? Графика что-ли, или как?
0
Andryushchenko
0 / 0 / 0
Регистрация: 11.08.2010
Сообщений: 29
12.08.2010, 10:47  [ТС] #8
Короче ) координаты сторон, конструктор с параметрами, метод для нахождения периметра и площади с выведением на екран... и использование дружественых функцый (я все то написал а вот как функцыи влепить ума не приложу) ). вот ето все мое задание Графику вообще не нада трогать мы ее ещо не учили ...
0
ForEveR
В астрале
Эксперт С++
7972 / 4734 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
12.08.2010, 10:48 #9
Andryushchenko, Ну раз это все твое задание у тебя уже сделано.
Я бы конечно не издевался так над языком, а назвал бы класс Square ну и далее соответственно. И площадь это все же Area а не square... ЗЫ Что такое построить квадрат? Как ты это понимаешь? Я это могу представить либо заданием параметра (что у тебя уже есть, но зачем тут друж. функция, тогда не понятно), либо графикой
0
Andryushchenko
0 / 0 / 0
Регистрация: 11.08.2010
Сообщений: 29
12.08.2010, 10:56  [ТС] #10
ну препод сказал влепите дружественую функцыю и посмотрите как она работает ... я то все задание зделал но зацыклился с етими функцыями ... ( я тоже не вижу смысл их использовать програма както начинает страно работать )
P.S. сорь за то что изковеркал классы :Д писал на скорую руку, спс я не оч силен в английском ) буду знать на будущие
0
ForEveR
В астрале
Эксперт С++
7972 / 4734 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
12.08.2010, 11:02 #11
Andryushchenko, Вмути перегрузку ввода-вывода... Если хочешь посмотреть как работают friend.

C++
1
2
3
4
5
6
7
8
9
10
11
istream& operator >>(istream& is, KBADRAT&Ob)
{
   cout<<"Enter size of square: "; 
   is>>Ob.a;
}
 
ostream& operator <<(ostream& os, KBADRAT&Ob)
{
   os<<"Size of square: "<< Ob.a <<'\n';
   return os;
}
В классе прототипы должны быть такие:

C++
1
2
friend istream& operator >>(istream& is, KBADRAT&Ob);
friend ostream& operator <<(ostream& os, KBADRAT&Ob);
0
Andryushchenko
0 / 0 / 0
Регистрация: 11.08.2010
Сообщений: 29
12.08.2010, 11:28  [ТС] #12
Сорь за тупость не оч понял куда ето впихнуть но щас попробую чото нахимичить...
0
ForEveR
В астрале
Эксперт С++
7972 / 4734 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
12.08.2010, 11:30 #13
Andryushchenko, Смотри. В класс пихаешь прототипы. В public секцию. Остальное реализуешь где угодно. Но так как у тебя h файл, то в том же файле где конструктор и прочее, но отдельно
0
Andryushchenko
0 / 0 / 0
Регистрация: 11.08.2010
Сообщений: 29
12.08.2010, 11:48  [ТС] #14
ЫЫ чото много ошыбок :Д ща попробую пошоманить
0
ForEveR
В астрале
Эксперт С++
7972 / 4734 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
12.08.2010, 11:56 #15
Andryushchenko, Скинь ошибки. Я мог быть в чем-то не прав. ЗЫ, чтобы ввести/вывести значение, в main-е соответственно пишешь. cin>>K; cout<<K;
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.08.2010, 11:56
Привет! Вот еще темы с ответами:

Ошибка: friend declaration declares a non-template function - C++
Всем доброго времени суток! Я корплю над задачкой: нада сделать класс вектор шаблонным, перегрузить операции ввода-вывода, и тд и тп. ...

Почему friend ostrem& operator <<(ostream& outs, const Rational&); - invalid function declaration? - C++
Пытаюсь скомпилировать программу пишет friend ostrem&amp; operator &lt;&lt;(ostream&amp; outs, const Rational&amp;); - invalid function declaration. ...

Перегрузка операторов, friend или нет friend? - C++
Всем здравствуйте. Есть такой вопрос: при перегрузке операторов в классе(пусть будут + и = (вообще неважно, за исключением потока)) как и...

Friend для friend - C++
всем доброго времени суток, покажу проблему на примере: Class B; class A{ int F; friend B; public: A(){F=0;}; };


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

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

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