为什么显示错误"not declared in this scope"?
Why is the error "not declared in this scope" shows?
我是 C++ 的初学者。我正在学习主题朋友功能。我有下面的代码,其中两个友元函数在 class 中声明并由构造函数调用,但错误显示声明的友元成员函数未在范围内声明。我在这里做错了什么?这是我的代码:
#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 未在此范围内声明
您正在定义一个全局函数
void display_des();
而不是成员函数
void Salary::display_des();
这意味着 display_des 没有 "this"- 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[...]...
(...)
}
我是 C++ 的初学者。我正在学习主题朋友功能。我有下面的代码,其中两个友元函数在 class 中声明并由构造函数调用,但错误显示声明的友元成员函数未在范围内声明。我在这里做错了什么?这是我的代码:
#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 未在此范围内声明
您正在定义一个全局函数
void display_des();
而不是成员函数
void Salary::display_des();
这意味着 display_des 没有 "this"- 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[...]...
(...)
}