class Student{
public:
Student(int test)
:key(705)
{
if(test == key)
{cout << "A student is being verified with a correct key: "<< test << endl;
allow=1;
}
else
{
cout << "Wrong key" ;
}
}
friend void printResult();
private:
const int key;
int allow;
};
void printResult()
{
if(allow==1)
{
cout<< " Maths: 75 \n Science:80 \n English: 75" << endl;
}
}
int main()
{
int testkey;
cout << "Enter key for Bob: ";
cin >> testkey;
Student bob(testkey);
printResult();
}
Run Code Online (Sandbox Code Playgroud)
printResult函数似乎无法从Student类访问变量allow(私有).我是否在错误的地方将printResult原型化或语法错误?AFAIK,我们可以在课堂上的任何地方为朋友制作原型.
那是因为allow属于类的实例,但没有引用实例.
您应该创建printResult该类的成员函数,而不是使其成为外部函数,或者使该函数引用Student实例,以便您可以allow通过instance.allowwhere instance是类型的参数来访问该成员const Student&.
printResult不是成员函数,所以你需要给它一个Student实例来进行操作.例如
void printResult(const Student& s)
{
if(s.allow==1)
{
cout<< " Maths: 75 \n Science:80 \n English: 75" << endl;
}
}
Run Code Online (Sandbox Code Playgroud)
然后
Student student(1);
printResult(student);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5529 次 |
| 最近记录: |