友元函数声明 C++ 中的错误
error in friend function declaration c++
我遇到编译错误。
||=== 构建:在 24.06.01 中调试(编译器:GNU GCC 编译器)===|
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();
}
您已经将 'sum' 声明为全局变量:
int sum[40];
C++ 不允许重新定义名称。您可以更改变量或函数名称来解决此问题。
我遇到编译错误。
||=== 构建:在 24.06.01 中调试(编译器:GNU GCC 编译器)===|
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();
}
您已经将 'sum' 声明为全局变量:
int sum[40];
C++ 不允许重新定义名称。您可以更改变量或函数名称来解决此问题。