VC6.0对友元支持的不好,将友元函数定义在类体外时总是报没有权限访问私有成员,将友元函数放入类体中就可以访问了,如下:
#include <iostream> using namespace std; class MyString { public: MyString(char *ptr=NULL); ~MyString(); friend ostream& operator<<(ostream& out, MyString &str) { if (str.m_data != NULL) out << str.m_data; return out; } private: char* m_data; }; MyString::MyString(char *ptr) { if (ptr == NULL) { m_data = new char[1]; *m_data = '\0'; } else { int nLen = strlen(ptr); m_data = new char[nLen+1]; strcpy(m_data, ptr); } } MyString::~MyString() { delete m_data; } /* ostream& operator<<(ostream& out, MyString &str) { if (str.m_data != NULL) out << str.m_data; return out; } */ int main() { MyString str("Hello"); cout << str << endl; MyString str2; cout << str2 << endl; return 0; }