友元函数声明c ++中的错误

时间:2017-06-25 05:14:13

标签: c++ friend-function

我收到了编译错误。

|| === Build:Debug in 24.06.01(compiler:GNU GCC Compiler)=== |

G:\ C ++ \ 24.06.01 \ main.cpp | 22 |错误:'void sum(Sb1,Sb2)'重新声明为不同类型的符号|

G:\ C ++ \ 24.06.01 \ main.cpp | 5 |注意:上一个声明'int sum [40]'|

G:\ C ++ \ 24.06.01 \ main.cpp | 36 |错误:'void sum(Sb1,Sb2)'重新声明为不同类型的符号|

G:\ C ++ \ 24.06.01 \ main.cpp | 5 |注意:上一个声明'int sum [40]'|

G:\ C ++ \ 24.06.01 \ main.cpp ||在函数'void sum(Sb1,Sb2)'中:|

G:\ C ++ \ 24.06.01 \ main.cpp | 38 |错误:'void sum(Sb1,Sb2)'重新声明为不同类型的符号|

G:\ C ++ \ 24.06.01 \ main.cpp | 5 |注意:上一个声明'int sum [40]'|

G:\ C ++ \ 24.06.01 \ main.cpp ||在函数'int main()'中:|

G:\ C ++ \ 24.06.01 \ main.cpp | 69 |错误:'sum'不能用作函数|

|| ===构建失败:4个错误,0个警告(0分钟,1秒(秒))=== |

请帮助!!

#include<iostream>
#include<conio.h>
#include<stdlib.h>
using namespace std;
int sum[40];
int roll[40];
int n;
class Sb1;
class Sb2;
class Sb1
{
    public:
    float marks1[40];
    void markssb1()
    {
       for(int i=0;i<n;i++)
       {
         cout<<"Enter Marks in subject 1 \n";
         cin>>marks1[40];
       }
    }
    friend void sum(Sb1,Sb2);
};
class Sb2
{
    public:
    float marks2[40];
    void markssb2()
    {
       for(int i=0;i<n;i++)
       {
         cout<<"Enter Marks in subject 2 \n";
         cin>>marks2[40];
       }
    }
    friend void sum(Sb1,Sb2);
};
void sum(Sb1 obj1,Sb2 obj2)
{
    for(int i=0;i<n;i++)
    {
        sum[i]=obj1.marks1[i]+obj2.marks2[i];
    }
}
void display()
{
    cout<<"Serial Number\t\t\tRoll Number\t\t\tTotal Marks\n";
    cout<<"----------------------------------------------------------------------------\n";
    for(int i=0;i<n;i++)
    {
        cout<<i<<"\t\t\t\t"<<roll[i]<<"\t\t\t\t"<<sum[i]<<endl;
    }
}
int main()
{
    Sb1 obj1;
    Sb2 obj2;
   cout<<"Enter number of students (Maximum 40 students)\n";
   cin>>n;
   if(n<=40)
    {
        for(int i=0;i<n;i++)
        {
            cout<<"Enter Roll Number of student "<<i+1<<endl;
            cin>>roll[i];
            obj1.markssb1();
            obj2.markssb2();
        }
        sum(obj1,obj2);
        display();
    }
    else
    {
      cout<<"Number of students entered exceed 40\n";
    }
    return 0;
    getch();
}

1 个答案:

答案 0 :(得分:0)

您已宣布&#39; sum&#39;作为全局变量:

int sum[40];

C ++不允许重新定义名称。您可以更改变量或函数名称来解决此问题。