是VC的bug,还是我的程序有问题?
#include "stdafx.h"
#include <iostream>
using namespace std;
class score
{
private:
int* pItem;
int nMaleItem;
int nFemaleItem;
public:
score(int male, int female):
nMaleItem(male),nFemaleItem(female)
{ pItem = new int[ nMaleItem + nFemaleItem ];}
~score(){ delete [] pItem;}
void getscores();
friend ostream& operator<<(ostream& os, const score& s);
};
void score::getscores()
{
cout << "Please input the score of each item(" <<
nMaleItem+nFemaleItem << " items):" << endl;
for( int i = 0 ; i < nMaleItem + nFemaleItem ; i++)
cin >> pItem[i];
}
ostream& operator<<(ostream& os, const score& s)
{
int total = 0;
os << "Item\t\t\tScore"<<endl;
os << "_____________________________________"<<endl;
for( int i = 0 ; i < s.nMaleItem + s.nFemaleItem ; i++)
{
os << i <<"\t\t\t"<<s.pItem[i] << endl;
total += s.pItem[i];
}
os << "_____________________________________"<<endl;
os << " \t\tTotal:\t" <<total << endl;
return os;
}
int main()
{
int nSchools,nMale, nFemale;
cout << "Please Input number of schools:" << endl;
cin >> nSchools;
cout << "Please Input nubmer of male items and number of female items:" << endl;
cin >> nMale >> nFemale;
for(int i = 0 ; i < nSchools; i++)
{
score s(nMale,nFemale);
s.getscores();
cout << s;
}
return 0;
}
--------------------Configuration: Sports - Win32 Debug--------------------
Compiling...
Sports.cpp
D:\MICROSOFT VISUAL STUDIO\MYPROJECTS\STL\Sports\Sports.cpp(62) : error C2248: 'nMaleItem' : cannot access private member declared in class 'score'
D:\MICROSOFT VISUAL STUDIO\MYPROJECTS\STL\Sports\Sports.cpp(36) : see declaration of 'nMaleItem'
D:\MICROSOFT VISUAL STUDIO\MYPROJECTS\STL\Sports\Sports.cpp(62) : error C2248: 'nFemaleItem' : cannot access private member declared in class 'score'
D:\MICROSOFT VISUAL STUDIO\MYPROJECTS\STL\Sports\Sports.cpp(37) : see declaration of 'nFemaleItem'
D:\MICROSOFT VISUAL STUDIO\MYPROJECTS\STL\Sports\Sports.cpp(64) : error C2248: 'pItem' : cannot access private member declared in class 'score'
D:\MICROSOFT VISUAL STUDIO\MYPROJECTS\STL\Sports\Sports.cpp(35) : see declaration of 'pItem'
D:\MICROSOFT VISUAL STUDIO\MYPROJECTS\STL\Sports\Sports.cpp(65) : error C2248: 'pItem' : cannot access private member declared in class 'score'
D:\MICROSOFT VISUAL STUDIO\MYPROJECTS\STL\Sports\Sports.cpp(35) : see declaration of 'pItem'
D:\MICROSOFT VISUAL STUDIO\MYPROJECTS\STL\Sports\Sports.cpp(84) : error C2593: 'operator <<' is ambiguous
Error executing cl.exe.
Sports.exe - 5 error(s), 0 warning(s)
以上代码在Dev C++上没有任何错误和警告。难道这段程序写的有问题??