Dear advanced c/g++ programers: I have a simple program from book C++ cookbook, page 291, 8.3, Using Constructors and Destructors to manage resources (or RAII), but it can not get compiled in my g++ ------------------------------------------------------------------------------------------------ // Example 8-3. Using constructors and destructors #include <iostream> #include <string> using namespace std; class Socket { public: Socket(const string& hostname) {} }; class HttpRequest { public: HttpRequest (const string& hostname) : sock_(new Socket(hostname)) {} void send(string soapMsg) {sock_ << soapMsg; } ~HttpRequest () {delete sock_;} private: Socket* sock_; }; void sendMyData(string soapMsg, string host) { HttpRequest req(host); req.send(soapMsg); // Nothing to do here, because when req goes out of scope // everything is cleaned up. } int main() { string s = "xml"; sendMyData(s, "www.oreilly.com"); } ------------------------------------------------------------------------------------------------------------------------ my test compile fail as ---------------------------------- eric@eric-laptop:~/cppcookbook/ch8$ g++ Example8-3.cpp Example8-3.cpp: In member function ‘void HttpRequest::send(std::string)’: Example8-3.cpp:13:39: error: no match for ‘operator<<’ in ‘((HttpRequest*)this)->HttpRequest::sock_ << soapMsg’ ------------------------------------------------------------- on both g++ 4.3.4 and 4.5.2 you can get its source code from http://examples.oreilly.com/9780596007614/ to test by yourself looking and thanks your help a lot in advance, Eric