Re: No match for 'operator<<' in '((HttpRequest*
On Jul 13, 7:08 pm, Ian Collins <ian-n...@hotmail.com> wrote:
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, U=
sing
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 =91void
HttpRequest::send(std::string)':
Example8-3.cpp:13:39: error: no match for =91operator<<' in
=91((HttpRequest*)this)->HttpRequest::sock_<< soapMsg'
-------------------------------------------------------------
You don't have an operator<<( Socket*, const std::string& ) declared
anywhere.
--
Ian Collins
I add
// ostream & operator<<(const std::string&) {}
in class Socket
(and : public Socket at class HttpRequest)
or
// ostream & operator<<( Socket*, const std::string& ) {}
in class HttpRequest
neither compile success
/* that book is claim tested good on visual c++ 7.1 in window xp,
would anyone try and post your result? */
so
please help again
and thanks a lot in advance, Eric