Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c++ > #7785 > unrolled thread

No match for 'operator<<' in '((HttpRequest*

Started byeric <cneric12lin0@gmail.com>
First post2011-07-13 17:55 -0700
Last post2011-07-14 17:34 +0200
Articles 11 — 3 participants

Back to article view | Back to comp.lang.c++


Contents

  No match for 'operator<<' in '((HttpRequest* eric <cneric12lin0@gmail.com> - 2011-07-13 17:55 -0700
    Re: No match for 'operator<<' in '((HttpRequest* Ian Collins <ian-news@hotmail.com> - 2011-07-14 14:08 +1200
      Re: No match for 'operator<<' in '((HttpRequest* eric <cneric12lin0@gmail.com> - 2011-07-13 19:42 -0700
        Re: No match for 'operator<<' in '((HttpRequest* Ian Collins <ian-news@hotmail.com> - 2011-07-14 16:58 +1200
          Re: No match for 'operator<<' in '((HttpRequest* eric <cneric12lin0@gmail.com> - 2011-07-13 22:17 -0700
            Re: No match for 'operator<<' in '((HttpRequest* Ian Collins <ian-news@hotmail.com> - 2011-07-14 17:55 +1200
              Re: No match for 'operator<<' in '((HttpRequest* eric <cneric12lin0@gmail.com> - 2011-07-13 23:06 -0700
    Re: No match for 'operator<<' in '((HttpRequest* "io_x" <a@b.c.invalid> - 2011-07-14 10:24 +0200
      Re: No match for 'operator<<' in '((HttpRequest* Ian Collins <ian-news@hotmail.com> - 2011-07-14 20:37 +1200
      Re: No match for 'operator<<' in '((HttpRequest* eric <cneric12lin0@gmail.com> - 2011-07-14 04:37 -0700
        Re: No match for 'operator<<' in '((HttpRequest* "io_x" <a@b.c.invalid> - 2011-07-14 17:34 +0200

#7785 — No match for 'operator<<' in '((HttpRequest*

Fromeric <cneric12lin0@gmail.com>
Date2011-07-13 17:55 -0700
SubjectNo match for 'operator<<' in '((HttpRequest*
Message-ID<2a9f24c1-ac62-4d44-b518-e30a9877fc13@f39g2000prb.googlegroups.com>
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

[toc] | [next] | [standalone]


#7786

FromIan Collins <ian-news@hotmail.com>
Date2011-07-14 14:08 +1200
Message-ID<9871f3F78bU1@mid.individual.net>
In reply to#7785
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<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’
> -------------------------------------------------------------

You don't have an operator<<( Socket*, const std::string& ) declared 
anywhere.

-- 
Ian Collins

[toc] | [prev] | [next] | [standalone]


#7787

Fromeric <cneric12lin0@gmail.com>
Date2011-07-13 19:42 -0700
Message-ID<ecace4bf-3150-42a4-a645-178e4654b1e5@m3g2000pre.googlegroups.com>
In reply to#7786
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, 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’
> > -------------------------------------------------------------
>
> 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

[toc] | [prev] | [next] | [standalone]


#7790

FromIan Collins <ian-news@hotmail.com>
Date2011-07-14 16:58 +1200
Message-ID<987bd9F78bU3@mid.individual.net>
In reply to#7787
On 07/14/11 02:42 PM, eric wrote:
> On Jul 13, 7:08 pm, Ian Collins<ian-n...@hotmail.com>  wrote:
>>
>> You don't have an operator<<( Socket*, const std::string&  ) declared
>> anywhere.
>
> 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

Post your code and errors.

-- 
Ian Collins

[toc] | [prev] | [next] | [standalone]


#7791

Fromeric <cneric12lin0@gmail.com>
Date2011-07-13 22:17 -0700
Message-ID<87eabda8-9f12-40e4-ac3e-f38101047a15@m5g2000prh.googlegroups.com>
In reply to#7790
>
> Post your code and errors.
>
> --
> Ian Collins

--------------------------------------------------------------------
If I tried your fist suggestion
---------------------------------
// Example 8-3.  Using constructors and destructors
#include <iostream>
#include <string>
using namespace std;
class Socket {
public:
   Socket(const string& hostname) {}

   // ostream & operator<<(const std::string&) {}
};
class HttpRequest : public Socket {
public:
  HttpRequest (const string& hostname) :
     sock_(new Socket(hostname)) {}

  ostream & operator<<( Socket*, const std::string& ) {}

  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");
}
-------------------------------------------------------------------------------
compile result is
------------------
eric@eric-laptop:~/cppcookbook/ch8$ g++ Example8-3.cpp
Example8-3.cpp:16:53: error: ‘std::ostream&
HttpRequest::operator<<(Socket*, const std::string&)’ must take
exactly one argument
Example8-3.cpp: In constructor ‘HttpRequest::HttpRequest(const
std::string&)’:
Example8-3.cpp:14:32: error: no matching function for call to
‘Socket::Socket()’
Example8-3.cpp:7:4: note: candidates are: Socket::Socket(const
std::string&)
Example8-3.cpp:5:14: note:                 Socket::Socket(const
Socket&)
Example8-3.cpp: In member function ‘void
HttpRequest::send(std::string)’:
Example8-3.cpp:18:39: error: no match for ‘operator<<’ in
‘((HttpRequest*)this)->HttpRequest::sock_ << soapMsg’


------------------------------------------------------------------------------------------------------------------
If I tried my other design, put opearator << in class Socket
---------------------------------------------------
// Example 8-3.  Using constructors and destructors
#include <iostream>
#include <string>
using namespace std;
class Socket {
public:
   Socket(const string& hostname) {}

    ostream & operator<<(const std::string&) {}
};
class HttpRequest:  public Socket   {
public:
  HttpRequest (const string& hostname) :
     sock_(new Socket(hostname)) {}

 // ostream & operator<<( Socket*, const std::string& ) {}

  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");
}
-------------------------------------------------------------------------------------------------
I get the following compiler error
----------------------------------
eric@eric-laptop:~/cppcookbook/ch8$ g++ Example8-3.cpp
Example8-3.cpp: In constructor ‘HttpRequest::HttpRequest(const
std::string&)’:
Example8-3.cpp:14:32: error: no matching function for call to
‘Socket::Socket()’
Example8-3.cpp:7:4: note: candidates are: Socket::Socket(const
std::string&)
Example8-3.cpp:5:14: note:                 Socket::Socket(const
Socket&)
Example8-3.cpp: In member function ‘void
HttpRequest::send(std::string)’:
Example8-3.cpp:18:39: error: no match for ‘operator<<’ in
‘((HttpRequest*)this)->HttpRequest::sock_ << soapMsg’
-----------------------------------------------------------------------------------------------------------------
hope that help any advanced c/g++ program to debug my(actually
author's) program
Thanks a lot in advance
Eric

[toc] | [prev] | [next] | [standalone]


#7793

FromIan Collins <ian-news@hotmail.com>
Date2011-07-14 17:55 +1200
Message-ID<987ep7F78bU4@mid.individual.net>
In reply to#7791
On 07/14/11 05:17 PM, eric wrote:
>
> ------------------------------------------------------------------------------------------------------------------
> If I tried my other design, put opearator<<  in class Socket
> ---------------------------------------------------
> // Example 8-3.  Using constructors and destructors
> #include<iostream>
> #include<string>
> using namespace std;
> class Socket {
> public:
>     Socket(const string&  hostname) {}
>
>      ostream&  operator<<(const std::string&) {}
> };

> class HttpRequest:  public Socket   {

Why is HttpRequest derived from Socket?

> public:
>    HttpRequest (const string&  hostname) :
>       sock_(new Socket(hostname)) {}
>
>   // ostream&  operator<<( Socket*, const std::string&  ) {}

This can't be a class member, declare it outside of the class and look 
at the return type (hint: where do you get an ostream to return?).

> hope that help any advanced c/g++ program to debug my(actually
> author's) program

The original code is pretty smelly (and wouldn't compile), but you've 
made it worse!

-- 
Ian Collins

[toc] | [prev] | [next] | [standalone]


#7794

Fromeric <cneric12lin0@gmail.com>
Date2011-07-13 23:06 -0700
Message-ID<955632b2-3a97-4148-96c7-ecb1cf669647@z15g2000pre.googlegroups.com>
In reply to#7793
On Jul 13, 10:55 pm, Ian Collins <ian-n...@hotmail.com> wrote:
> On 07/14/11 05:17 PM, eric wrote:
>
>
>
> > ------------------------------------------------------------------------------------------------------------------
> > If I tried my other design, put opearator<<  in class Socket
> > ---------------------------------------------------
> > // Example 8-3.  Using constructors and destructors
> > #include<iostream>
> > #include<string>
> > using namespace std;
> > class Socket {
> > public:
> >     Socket(const string&  hostname) {}
>
> >      ostream&  operator<<(const std::string&) {}
> > };
> > class HttpRequest:  public Socket   {
>
> Why is HttpRequest derived from Socket?
>
> > public:
> >    HttpRequest (const string&  hostname) :
> >       sock_(new Socket(hostname)) {}
>
> >   // ostream&  operator<<( Socket*, const std::string&  ) {}
>
> This can't be a class member, declare it outside of the class and look
> at the return type (hint: where do you get an ostream to return?).
>
> > hope that help any advanced c/g++ program to debug my(actually
> > author's) program
>
> The original code is pretty smelly (and wouldn't compile), but you've
> made it worse!
>
> --
> Ian Collins
------------------------------------------------------------------------------

why I tried to use : public Socket ?
because I guess , <<   operator used in
void send(string soapMsg) {sock_ << soapMsg; }
in class HttpRequest
used declaration in class Socket

Need any advanced c/g++ programers suggestion/help and thanks a lot in
advance, Eric

Eric

[toc] | [prev] | [next] | [standalone]


#7795

From"io_x" <a@b.c.invalid>
Date2011-07-14 10:24 +0200
Message-ID<4e1ea760$0$15660$4fafbaef@reader2.news.tin.it>
In reply to#7785
=================================================
"eric" <cneric12lin0@gmail.com> ha scritto nel messaggio
news:2a9f24c1-ac62-4d44-b518-e30a9877fc13@f39g2000prb.googlegroups.com...
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
========================================================

this here compile and run: i.e. print "xml" in "thisfile"
file in this directory;
this not send nothing in the net, just open and write a file

--------------------
// Example 8-3.  Using constructors and destructors
#include <stdio.h>
#include <iostream>
#include <string>
#define  u8  unsigned char

#if   ULONG_MAX == 0xFFFFFFFF
#define  u32 unsigned long
#elif UINT_MAX  == 0xFFFFFFFF
#define  u32 unsigned int
#elif USHRT_MAX == 0xFFFFFFFF
#define  u32 unsigned short
#else
#error  "Non posso compilare con questo sistema"
#endif

#define  uns  unsigned

// macro for function
#define  P  printf

// macro for keyWords
#define G  goto
#define R  return
#define W  while
#define F  for
#define T  template
#define TN typename
#define S  sizeof


using namespace std;

class Socket{
public:

Socket(string& hostname)
{u8  *a=hostname.c_str();

 fsck=fopen(a , "w+b");}

~Socket(){fsck=(FILE*)fclose(fsck);
// better without this assignament but
// here somone has to print a message if fsck==-1

}

 u32 send(string& soapMsg)
 {size_t  k, slen;

  slen=soapMsg.length();
  F(k=0; k<slen ; ++k)
      if( fputc(soapMsg[k], fsck) == EOF )  break;
  if(k!=slen)  R  -1;
  R  0;
 }

 FILE*  fsck;
};

u32 sendMyData(string soapMsg, string host) {
   Socket  req(host);

   R  req.send(soapMsg);

   // Nothing to do here, because when req goes out of scope
   // everything is cleaned up.
}

int main(void)
{string  s="xml";
 sendMyData(s, "thisfile");

 R  0;
}






[toc] | [prev] | [next] | [standalone]


#7796

FromIan Collins <ian-news@hotmail.com>
Date2011-07-14 20:37 +1200
Message-ID<987o88F78bU5@mid.individual.net>
In reply to#7795
On 07/14/11 08:24 PM, io_x wrote:

> #define  uns  unsigned
>
> // macro for function
> #define  P  printf

NO!

-- 
Ian Collins

[toc] | [prev] | [next] | [standalone]


#7800

Fromeric <cneric12lin0@gmail.com>
Date2011-07-14 04:37 -0700
Message-ID<a7286acf-941d-4c4c-a8ba-0103b63cd3a2@t38g2000prj.googlegroups.com>
In reply to#7795
On Jul 14, 1:24 am, "io_x" <a...@b.c.invalid> wrote:
> =================================================
> "eric" <cneric12l...@gmail.com> ha scritto nel messaggionews:2a9f24c1-ac62-4d44-b518-e30a9877fc13@f39g2000prb.googlegroups.com...
> 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 fromhttp://examples.oreilly.com/9780596007614/
> to test by yourself
>
> looking and thanks your help a lot in advance, Eric
> ========================================================
>
> this here compile and run: i.e. print "xml" in "thisfile"
> file in this directory;
> this not send nothing in the net, just open and write a file
>
> --------------------
> // Example 8-3.  Using constructors and destructors
> #include <stdio.h>
> #include <iostream>
> #include <string>
> #define  u8  unsigned char
>
> #if   ULONG_MAX == 0xFFFFFFFF
> #define  u32 unsigned long
> #elif UINT_MAX  == 0xFFFFFFFF
> #define  u32 unsigned int
> #elif USHRT_MAX == 0xFFFFFFFF
> #define  u32 unsigned short
> #else
> #error  "Non posso compilare con questo sistema"
> #endif
>
> #define  uns  unsigned
>
> // macro for function
> #define  P  printf
>
> // macro for keyWords
> #define G  goto
> #define R  return
> #define W  while
> #define F  for
> #define T  template
> #define TN typename
> #define S  sizeof
>
> using namespace std;
>
> class Socket{
> public:
>
> Socket(string& hostname)
> {u8  *a=hostname.c_str();
>
>  fsck=fopen(a , "w+b");}
>
> ~Socket(){fsck=(FILE*)fclose(fsck);
> // better without this assignament but
> // here somone has to print a message if fsck==-1
>
> }
>
>  u32 send(string& soapMsg)
>  {size_t  k, slen;
>
>   slen=soapMsg.length();
>   F(k=0; k<slen ; ++k)
>       if( fputc(soapMsg[k], fsck) == EOF )  break;
>   if(k!=slen)  R  -1;
>   R  0;
>  }
>
>  FILE*  fsck;
>
> };
>
> u32 sendMyData(string soapMsg, string host) {
>    Socket  req(host);
>
>    R  req.send(soapMsg);
>
>    // Nothing to do here, because when req goes out of scope
>    // everything is cleaned up.
>
> }
>
> int main(void)
> {string  s="xml";
>  sendMyData(s, "thisfile");
>
>  R  0;
>
> }
>
>

eric@eric-laptop:~/cppcookbook/ch8$ g++ Example8-3-2.cpp
Example8-3-2.cpp:14:2: error: #error "Non posso compilare con questo
sistema"
Example8-3-2.cpp:47:2: error: ‘u32’ does not name a type
Example8-3-2.cpp: In constructor ‘Socket::Socket(std::string&)’:
Example8-3-2.cpp:37:24: error: invalid conversion from ‘const char*’
to ‘unsigned char*’
Example8-3-2.cpp:39:22: error: invalid conversion from ‘unsigned
char*’ to ‘const char*’
Example8-3-2.cpp:39:22: error:   initializing argument 1 of ‘FILE*
fopen(const char*, const char*)’
Example8-3-2.cpp: At global scope:
Example8-3-2.cpp:61:1: error: ‘u32’ does not name a type
Example8-3-2.cpp: In function ‘int main()’:
Example8-3-2.cpp:73:26: error: ‘sendMyData’ was not declared in this
scope
---------------------------------------------------------------------------------------------------------
Thanks Io_x
and your suggestion
above is my compiler 's response of your test program. I will try to
learn more by myself. And at meantime,
 I guess it is not difficult for you to refine it if you think it is
necessary so it can fit on my system too.

of course, I always welcome whoever keep original class of book
authors expect, i.e. class HttpRequest
and its overloaded operator << in
void send(string soapMsg) {sock_ << soapMsg;}
to complete the fix
Eric
----------------------------------------------------------------------------------------------------------

[toc] | [prev] | [next] | [standalone]


#7808

From"io_x" <a@b.c.invalid>
Date2011-07-14 17:34 +0200
Message-ID<4e1f0c17$0$44207$4fafbaef@reader1.news.tin.it>
In reply to#7800
"eric" <cneric12lin0@gmail.com> ha scritto nel messaggio
news:a7286acf-941d-4c4c-a8ba-0103b63cd3a2@t38g2000prj.googlegroups.com...
On Jul 14, 1:24 am, "io_x" <a...@b.c.invalid> wrote:
> =================================================
>eric@eric-laptop:~/cppcookbook/ch8$ g++ Example8-3-2.cpp
>Example8-3-2.cpp:14:2: error: #error "Non posso compilare con questo
>sistema"
>Example8-3-2.cpp:47:2: error: ‘u32’ does not name a type
>Example8-3-2.cpp: In constructor ‘Socket::Socket(std::string&)’:
>Example8-3-2.cpp:37:24: error: invalid conversion from ‘const char*’
>to ‘unsigned char*’
>Example8-3-2.cpp:39:22: error: invalid conversion from ‘unsigned
>char*’ to ‘const char*’
>Example8-3-2.cpp:39:22: error:   initializing argument 1 of ‘FILE*
>fopen(const char*, const char*)’
>Example8-3-2.cpp: At global scope:
>Example8-3-2.cpp:61:1: error: ‘u32’ does not name a type
>Example8-3-2.cpp: In function ‘int main()’:
>Example8-3-2.cpp:73:26: error: ‘sendMyData’ was not declared in this
>scope
>--------------------------------------------------------------------------------------------------->------
Thanks Io_x
>and your suggestion
>above is my compiler 's response of your test program. I will try to
>learn more by myself. And at meantime,
> I guess it is not difficult for you to refine it if you think it is
>necessary so it can fit on my system too.

i forget one header... i'm not too much expert...
than i not use the C++ file way, but the C one
than i use macro all want i not to write i.e. P, G etc etc

desclaimer: it could be wrong;
here  it just open a file of name "thisfile" and write in it just "xml"
there it could make burn your little pc
could be less danger if execute in a debugger one step at time

// Example 8-3.  Using constructors and destructors
#include <stdio.h>
#include <limits.h>

#include <iostream>
#include <string>

#define  u8  unsigned char

#if   ULONG_MAX == 0xFFFFFFFF
#define  u32 unsigned long
#elif UINT_MAX  == 0xFFFFFFFF
#define  u32 unsigned int
#elif USHRT_MAX == 0xFFFFFFFF
#define  u32 unsigned short
#else
#define  u32 unsigned long
#endif

#define  uns  unsigned

// macro for function
#define  P  printf

// macro for keyWords
#define G  goto
#define R  return
#define W  while
#define F  for
#define T  template
#define TN typename
#define S  sizeof


using namespace std;

class Socket{
public:

Socket(string& hostname)
{u8  *a=(u8*)hostname.c_str();

 name="NOfile";
 fsck  = fopen( (const char*)a , "w+b" );
 if(fsck!=0)
      {name=hostname;}
}

~Socket()
{if( fclose(fsck)==-1 )
     P("Errore on close file %s\n", name.c_str());
}

int send(string& soapMsg)
 {size_t  k, slen;

  slen=soapMsg.length();
  F(k=0; k<slen ; ++k)
      if( fputc(soapMsg[k], fsck) == EOF )  break;
  if(k!=slen)  R  -1;
  R  0;
 }

// here could be 2 file too and not just one
 FILE*   fsck;
 string  name;
};

int sendMyData(string soapMsg, string host) {
   Socket  req(host);

   R  req.send(soapMsg);
}

int main(void)
{string  s="xml";
 if(sendMyData(s, "thisfile")==-1)
      P("ERROR\n");
 else P("seems ok\n");
 R  0;
}

>of course, I always welcome whoever keep original class of book
>authors expect, i.e. class HttpRequest
>and its overloaded operator << in
>void send(string soapMsg) {sock_ << soapMsg;}
>to complete the fix
>Eric
----------------------------------------------------------------------------------------------------------




[toc] | [prev] | [standalone]


Back to top | Article view | comp.lang.c++


csiph-web