sal[loop]; 如果(sal[loop],c++,function,oop,member,friend-function,C++,Function,Oop,Member,Friend Function" /> sal[loop]; 如果(sal[loop],c++,function,oop,member,friend-function,C++,Function,Oop,Member,Friend Function" />

为什么会出现错误;未在此范围内声明”;显示? 我是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; } #包括 班级工资 { 私人: int-sal[10]; 公众: 朋友无效添加_详细信息(); void display(); 好友无效显示_des(); 薪金() { 添加_详细信息(); } }; void add_details() { int循环=0; for(loop=0;loop>sal[loop]; 如果(sal[loop]

为什么会出现错误;未在此范围内声明”;显示? 我是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; } #包括 班级工资 { 私人: int-sal[10]; 公众: 朋友无效添加_详细信息(); void display(); 好友无效显示_des(); 薪金() { 添加_详细信息(); } }; void add_details() { int循环=0; for(loop=0;loop>sal[loop]; 如果(sal[loop],c++,function,oop,member,friend-function,C++,Function,Oop,Member,Friend Function,您正在定义一个全局函数 void display_des(); 而不是成员函数 void Salary::display_des(); 这意味着display_des没有可以从中获取成员sal[]的“this”-Salary对象。您也没有从外部向其传递Salary对象,因此它应该使用哪个sal[ 因此,您可以使用如下友元函数: void display_des(Salary& obj){ obj.sal[...]... } 或者使用成员函数,类似于: class Salar

您正在定义一个全局函数

void display_des();
而不是成员函数

void Salary::display_des();
这意味着display_des没有可以从中获取成员sal[]的“this”-Salary对象。您也没有从外部向其传递Salary对象,因此它应该使用哪个sal[

因此,您可以使用如下友元函数:

void display_des(Salary& obj){
    obj.sal[...]...
}
或者使用成员函数,类似于:

class Salary
{
private:
    int sal[10];

public:
    (...)
    void display_des();
    (...)
};
(...)
void Salary::display_des(){
    sal[...]...
    (...)
}

我也这么认为,但是关于
朋友
关键字呢?朋友意味着它可以访问给定薪资对象的私有字段。但是你不能将其传递给薪资对象。我知道
朋友
是什么。但是你的答案是,OP意味着成员函数,即使他/她可能意味着朋友函数。你的答案应该是b重新表述为OP应该将
Salary::
添加到类定义中的函数定义中。oops,本以为您是OP,添加了该friend函数!=成员函数。这些函数中没有
Salary
的实例。您实际上是在实现成员函数还是朋友函数s