C++异常,小弟我解决不了,友元函数访问不了所在声明类的私有变量
C++错误,我解决不了,友元函数访问不了所在声明类的私有变量
书上的代码
上机环境VC6
错误信息:
--------------------Configuration: exp9.2 - Win32 Debug--------------------
Compiling...
exp9.2.cpp
C:\Documents and Settings\Administrator\桌面\project\C++ cood form book\chap9\exp9.2.cpp(23) : error C2248: 'i' : cannot access private member declared in class 'test'
C:\Documents and Settings\Administrator\桌面\project\C++ cood form book\chap9\exp9.2.cpp(7) : see declaration of 'i'
C:\Documents and Settings\Administrator\桌面\project\C++ cood form book\chap9\exp9.2.cpp(24) : error C2248: 'f' : cannot access private member declared in class 'test'
C:\Documents and Settings\Administrator\桌面\project\C++ cood form book\chap9\exp9.2.cpp(8) : see declaration of 'f'
C:\Documents and Settings\Administrator\桌面\project\C++ cood form book\chap9\exp9.2.cpp(25) : error C2248: 'ch' : cannot access private member declared in class 'test'
C:\Documents and Settings\Administrator\桌面\project\C++ cood form book\chap9\exp9.2.cpp(9) : see declaration of 'ch'
C:\Documents and Settings\Administrator\桌面\project\C++ cood form book\chap9\exp9.2.cpp(31) : error C2248: 'i' : cannot access private member declared in class 'test'
C:\Documents and Settings\Administrator\桌面\project\C++ cood form book\chap9\exp9.2.cpp(7) : see declaration of 'i'
C:\Documents and Settings\Administrator\桌面\project\C++ cood form book\chap9\exp9.2.cpp(32) : error C2248: 'f' : cannot access private member declared in class 'test'
C:\Documents and Settings\Administrator\桌面\project\C++ cood form book\chap9\exp9.2.cpp(8) : see declaration of 'f'
C:\Documents and Settings\Administrator\桌面\project\C++ cood form book\chap9\exp9.2.cpp(33) : error C2248: 'ch' : cannot access private member declared in class 'test'
C:\Documents and Settings\Administrator\桌面\project\C++ cood form book\chap9\exp9.2.cpp(9) : see declaration of 'ch'
C:\Documents and Settings\Administrator\桌面\project\C++ cood form book\chap9\exp9.2.cpp(40) : error C2668: '<<' : ambiguous call to overloaded function
C:\Documents and Settings\Administrator\桌面\project\C++ cood form book\chap9\exp9.2.cpp(43) : error C2668: '>>' : ambiguous call to overloaded function
C:\Documents and Settings\Administrator\桌面\project\C++ cood form book\chap9\exp9.2.cpp(44) : error C2668: '>>' : ambiguous call to overloaded function
C:\Documents and Settings\Administrator\桌面\project\C++ cood form book\chap9\exp9.2.cpp(45) : error C2668: '<<' : ambiguous call to overloaded function
C:\Documents and Settings\Administrator\桌面\project\C++ cood form book\chap9\exp9.2.cpp(46) : error C2668: '<<' : ambiguous call to overloaded function
Error executing cl.exe.
------解决方案--------------------
- C/C++ code
#include<iostream> using namespace std; class test { private: int i; float f; char ch; public: test(int a=0, float b=0, char c='\0') { i = a; f = b; ch = c; } friend ostream& operator<<(ostream &, test); friend istream& operator>>(istream &, test &); }; ostream& operator<<(ostream &stream, test obj) { stream << obj.i << ","; stream << obj.f << ","; stream << obj.ch << endl; return stream; } istream& operator>>(istream &t_stream, test &obj) { t_stream >> obj.i; t_stream >> obj.f; t_stream >> obj.ch; return t_stream; } void main() { test A(45, 8.5, 'W'); operator<<(cout, A); test B, C; cout << "Input as i f ch:"; operator>>(cin, B); operator>>(cin, C); operator<<(cout, B); operator<<(cout, C); }
书上的代码
上机环境VC6
错误信息:
--------------------Configuration: exp9.2 - Win32 Debug--------------------
Compiling...
exp9.2.cpp
C:\Documents and Settings\Administrator\桌面\project\C++ cood form book\chap9\exp9.2.cpp(23) : error C2248: 'i' : cannot access private member declared in class 'test'
C:\Documents and Settings\Administrator\桌面\project\C++ cood form book\chap9\exp9.2.cpp(7) : see declaration of 'i'
C:\Documents and Settings\Administrator\桌面\project\C++ cood form book\chap9\exp9.2.cpp(24) : error C2248: 'f' : cannot access private member declared in class 'test'
C:\Documents and Settings\Administrator\桌面\project\C++ cood form book\chap9\exp9.2.cpp(8) : see declaration of 'f'
C:\Documents and Settings\Administrator\桌面\project\C++ cood form book\chap9\exp9.2.cpp(25) : error C2248: 'ch' : cannot access private member declared in class 'test'
C:\Documents and Settings\Administrator\桌面\project\C++ cood form book\chap9\exp9.2.cpp(9) : see declaration of 'ch'
C:\Documents and Settings\Administrator\桌面\project\C++ cood form book\chap9\exp9.2.cpp(31) : error C2248: 'i' : cannot access private member declared in class 'test'
C:\Documents and Settings\Administrator\桌面\project\C++ cood form book\chap9\exp9.2.cpp(7) : see declaration of 'i'
C:\Documents and Settings\Administrator\桌面\project\C++ cood form book\chap9\exp9.2.cpp(32) : error C2248: 'f' : cannot access private member declared in class 'test'
C:\Documents and Settings\Administrator\桌面\project\C++ cood form book\chap9\exp9.2.cpp(8) : see declaration of 'f'
C:\Documents and Settings\Administrator\桌面\project\C++ cood form book\chap9\exp9.2.cpp(33) : error C2248: 'ch' : cannot access private member declared in class 'test'
C:\Documents and Settings\Administrator\桌面\project\C++ cood form book\chap9\exp9.2.cpp(9) : see declaration of 'ch'
C:\Documents and Settings\Administrator\桌面\project\C++ cood form book\chap9\exp9.2.cpp(40) : error C2668: '<<' : ambiguous call to overloaded function
C:\Documents and Settings\Administrator\桌面\project\C++ cood form book\chap9\exp9.2.cpp(43) : error C2668: '>>' : ambiguous call to overloaded function
C:\Documents and Settings\Administrator\桌面\project\C++ cood form book\chap9\exp9.2.cpp(44) : error C2668: '>>' : ambiguous call to overloaded function
C:\Documents and Settings\Administrator\桌面\project\C++ cood form book\chap9\exp9.2.cpp(45) : error C2668: '<<' : ambiguous call to overloaded function
C:\Documents and Settings\Administrator\桌面\project\C++ cood form book\chap9\exp9.2.cpp(46) : error C2668: '<<' : ambiguous call to overloaded function
Error executing cl.exe.
------解决方案--------------------