我是C ++的初学者。我正在学习主题朋友的功能。我有下面的代码,其中两个友元函数在类中声明并由构造函数调用,但错误显示声明的友元成员函数未在范围中声明。我在这做错了什么?这是我的代码:
#include <iostream.h>
class Salary
{
private:
int sal[10];
public:
friend void add_details();
void display();
friend void display_des();
Salary()
{
add_details();
}
};
void add_details()
{
int loop = 0;
for(loop=0;loop<10;loop++)
{
cin >> sal[loop];
if (sal[loop] <= 0)
{
cout << "The amount should be greater than 0" << endl;
loop = loop - 1;
continue;
}
}
}
void display_des()
{
int sal_des[10];
int loop1 = 0, loop2;
for(loop1=0; loop1<10; loop1++)
{
sal_des[loop1] = sal[loop1];
}
for (loop1=0; loop1<10; loop1++)
{
for(loop2=loop1+1; loop2<10; loop2++)
{
if (sal_des[loop1]< sal_des[loop2])
{
int temp;
temp = sal_des[loop1];
sal_des[loop1] = sal_des[loop2];
sal_des[loop2] = temp;
}
}
}
for(loop1=0; loop1<10; loop1++)
{
cout << sal_des[loop1];
}
}
int main()
{
Salary sal1;
sal1.display_des();
return 0;
}
此外,函数display_des()
中的另一个错误显示为sal未在此范围内声明
答案 0 :(得分:2)
您正在定义全局函数
void display_des();
而不是成员函数
void Salary::display_des();
这意味着display_des没有&#34;这个&#34; - Salary-object,它可以从中获取成员sal []。你也没有从外面传递一个Salary-object,那么sal []应该用吗?
所以要么你使用像这样的朋友函数:
void display_des(Salary& obj){
obj.sal[...]...
}
或者您使用成员函数,类似于:
class Salary
{
private:
int sal[10];
public:
(...)
void display_des();
(...)
};
(...)
void Salary::display_des(){
sal[...]...
(...)
}