Consider the following code:
#include<iostream>
using namespace std;
class sample
{
int a;
int b;
public:
void setValue()
{
a=25;
b=40;
}
friend float mean(sample s)
{
return float(s.a+s.b)/2.0;
}
}
int main()
{
sample x;
x.setValue();
cout<< "mean value:"<< mean(x)<<endl;
cin.ignore();
getchar();
return (0);
}
I expected this to output when attempting to compile and run it:
mean value: 32.5
However, I get these compiler errors isntead:
1> frndF.cpp
1>c:\users\mg\documents\visual studio 2010\projects\frndf\frndf\frndf.cpp(18): error C2628: 'sample' followed by 'int' is illegal (did you forget a ';'?)
1>c:\users\mg\documents\visual studio 2010\projects\frndf\frndf\frndf.cpp(19): error C3874: return type of 'main' should be 'int' instead of 'sample'
1>c:\users\mg\documents\visual studio 2010\projects\frndf\frndf\frndf.cpp(27): error C2664: 'sample::sample(const sample &)' : cannot convert parameter 1 from 'int' to 'const sample &'
1> Reason: cannot convert from 'int' to 'const sample'
1> No constructor could take the source type, or constructor overload resolution was ambiguous
1>c:\users\mg\documents\visual studio 2010\projects\frndf\frndf\frndf.cpp(15): warning C4244: 'return' : conversion from 'double' to 'float', possible loss of data
What did I do wrong?