Path: csiph.com!x330-a1.tempe.blueboxinc.net!newsfeed.hal-mli.net!feeder1.hal-mli.net!nx02.iad01.newshosting.com!newshosting.com!69.16.185.11.MISMATCH!npeer01.iad.highwinds-media.com!news.highwinds-media.com!feed-me.highwinds-media.com!postnews.google.com!news3.google.com!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail From: Ian Collins Newsgroups: comp.lang.c++ Subject: Re: No match for 'operator<<' in '((HttpRequest* Date: Thu, 14 Jul 2011 14:08:42 +1200 Lines: 49 Message-ID: <9871f3F78bU1@mid.individual.net> References: <2a9f24c1-ac62-4d44-b518-e30a9877fc13@f39g2000prb.googlegroups.com> Mime-Version: 1.0 Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 8bit X-Trace: individual.net WLYodJ1zWudRvqQFdxvnsAgpjFpWa+bwG5IVGG7qq8FQqvVELw Cancel-Lock: sha1:1kq3K9vbkZnXaPqU3donnlguBgk= User-Agent: Mozilla/5.0 (X11; U; SunOS i86pc; en-US; rv:1.9.2.9) Gecko/20101021 Lightning/1.0b2 Thunderbird/3.1.4 In-Reply-To: <2a9f24c1-ac62-4d44-b518-e30a9877fc13@f39g2000prb.googlegroups.com> Xref: x330-a1.tempe.blueboxinc.net comp.lang.c++:7786 On 07/14/11 12:55 PM, eric wrote: > 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 > #include > 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’ > ------------------------------------------------------------- You don't have an operator<<( Socket*, const std::string& ) declared anywhere. -- Ian Collins