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

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

Войти
Регистрация
Восстановить пароль
 
zhenya.ya
1 / 1 / 0
Регистрация: 29.11.2009
Сообщений: 305
#1

friend function - C++

29.09.2010, 22:56. Просмотров 886. Ответов 3
Метки нет (Все метки)

После добавления дружественной ф-ции sum( а она для сложения salary у человека, которого я выберу)
класс перестал работать. Что у меня не так?
Ф-ция:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void sum(bank ob)
{
    char line[22];int s=0;
    cout<<" input name:"<<endl;
    cin>>line;
    for(int i=0;i<ob.n;i++)
    {
        if(strcmp(line,ob.name[i])==0)
        {
            for(int j=0;j<ob.vc[i];j++)
                s+=ob.salary[i][j];
        }
    }
    cout<<"\n"<<s<<endl;
}
весь код:
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
class bank
{   
private:
    char *bank_name;
    char **name;
    int **value;
    int **salary;
public:
    int n,*vc;
    bank();
    ~bank();
    void add();
    void show();
    void setsize();
    friend void sum(bank ob);
};
bank::bank()
{
     n=0;
     int **value=0,**salary=0;
     char **name='\0',*bank_name='\0';
}
void bank::setsize()
{
    cout<<" size (n):"<<endl;
    cin>>n;
}
void bank::add()
{
    bank_name=new char[33];
    cout<<"input bank_name\n"<<endl;
    cin>>bank_name;
 
    char str[55];
    vc=new int[n];
    name=new char *[n];
    value=new int *[n];
    salary=new int *[n];
for(int i=0;i<n;i++)
{
    system("cls");
    cout<<i<<":iput name:\n"<<endl;
    cin>>str;
    name[i]=new char[strlen(str)+1];
    strcpy(name[i],str);
 
    cout<<"input amount of values:";
cin>>vc[i];
value[i]=new int[n];
salary[i]=new int[n];
for(int j=0;j<vc[i];j++)
{
    cout<<"values:"<<j<<endl;
cin>>value[i][j];
cout<<"salary:"<<endl;
cin>>salary[i][j];
}
}
system("cls");
}
void bank::show()
{
    cout<<bank_name<<endl;
    for(int i=0;i<n;i++)
    {
    cout<<name[i]<<"\n";
    for(int j=0;j<vc[i];j++)
    {
   cout<<value[i][j]<<" "<<salary[i][j]<<endl;
    }
    }
}
void sum(bank ob)
{
    char line[22];int s=0;
    cout<<" input name:"<<endl;
    cin>>line;
    for(int i=0;i<ob.n;i++)
    {
        if(strcmp(line,ob.name[i])==0)
        {
            for(int j=0;j<ob.vc[i];j++)
                s+=ob.salary[i][j];
        }
    }
    cout<<"\n"<<s<<endl;
}
 
bank::~bank()
{
    delete []name;
    delete []bank_name;
    delete []value;
    delete []salary;
    delete []vc;
}
void main()
{
    bank obj;
    obj.setsize();
    obj.add();
    obj.show();
    sum(obj);
    system("PAUSE");
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.09.2010, 22:56
Здравствуйте! Я подобрал для вас темы с ответами на вопрос 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++
Помогите плз разобраться: Когда я делаю инкремент &quot;х&quot; через закрытые функции класса - все работает нормально, а когда через...

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

Friend Function - C++
Я не очень понимаю как пользаватса Friend функцыей Class.h #include &lt;stdio.h&gt; #include &quot;iostream&quot; using namespace std; ...

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; Виртуальный метод...

3
gooseim
Эксперт С++
508 / 412 / 37
Регистрация: 23.09.2010
Сообщений: 1,159
29.09.2010, 22:58 #2
Как конкретно класс перестал работать?
0
zhenya.ya
1 / 1 / 0
Регистрация: 29.11.2009
Сообщений: 305
29.09.2010, 23:15  [ТС] #3
если точнее, то после выволнения ф-ции sum() код срывается:вылазит c++ debug library.
0
zhenya.ya
1 / 1 / 0
Регистрация: 29.11.2009
Сообщений: 305
30.09.2010, 19:17  [ТС] #4
Есть 3 класса, но никак не могу их корректно передружить. Ругается на то, что поля name,value,n и т.д. не инициализированы. Что у меня не так?

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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
class person_name;
class person_value;
class bank
{   
private:
    char *bank_name;
public:
    int n,*vc;
    bank();
    ~bank();
    void setsize();
    void addBank_name();
    void addName();
    void addValue();
    void showBank();
    friend class person_name;
    friend class person_value;
};
class person_name
{
private:
    char **name;
public:
    friend void bank::addName();
};
 
class person_value
{
private:
int **value;
int **salary;
public:
    friend void bank::addValue();
};
bank::bank()
{
     n=0;
     int **value=0,**salary=0;
     char **name='\0',*bank_name='\0';
}
 
void bank::setsize()
{
    cout<<" size (n):"<<endl;
    cin>>n;
}
 
void bank::addBank_name()
{
    bank_name=new char[33];
    cout<<"input bank_name\n"<<endl;
    cin>>bank_name;
}
 
void bank::addName()
{
    char str[55];
    name=new char *[n];
 
for(int i=0;i<n;i++)
{
    system("cls");
    cout<<i<<":iput name:\n"<<endl;
    cin>>str;
    name[i]=new char[strlen(str)+1];
    strcpy(name[i],str);
}
}
void bank::addValue()
{
    value=new int *[n];
    salary=new int *[n];
    vc=new int[n];
    for(int i=0;i<n;i++)
    {
    cout<<"input amount of values:";
cin>>vc[i];
value[i]=new int[n];
salary[i]=new int[n];
for(int j=0;j<vc[i];j++)
{
    cout<<"values:"<<j<<endl;
cin>>value[i][j];
cout<<"salary:"<<endl;
cin>>salary[i][j];
}
    }
system("cls");
}
void bank::showBank()
{
    cout<<bank_name<<endl;
    for(int i=0;i<n;i++)
    {
    cout<<name[i]<<"\n";
    for(int j=0;j<vc[i];j++)
    {
   cout<<value[i][j]<<" "<<salary[i][j]<<endl;
    }
    }
}
bank::~bank()
{
    delete []bank_name;
    delete []name;
    delete []value;
    delete []salary;
    delete []vc;
}
void main()
{
    bank object;
    object.addBank_name();
    object.setsize();
    object.addName();
    object.addValue();
    object.showBank();
    system("pause");
}
0
30.09.2010, 19:17
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.09.2010, 19:17
Привет! Вот еще темы с ответами:

Ошибка: 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;}; };


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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