Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.c++ > #7785 > unrolled thread
| Started by | eric <cneric12lin0@gmail.com> |
|---|---|
| First post | 2011-07-13 17:55 -0700 |
| Last post | 2011-07-14 17:34 +0200 |
| Articles | 11 — 3 participants |
Back to article view | Back to comp.lang.c++
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
| From | eric <cneric12lin0@gmail.com> |
|---|---|
| Date | 2011-07-13 17:55 -0700 |
| Subject | No 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]
| From | Ian Collins <ian-news@hotmail.com> |
|---|---|
| Date | 2011-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]
| From | eric <cneric12lin0@gmail.com> |
|---|---|
| Date | 2011-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]
| From | Ian Collins <ian-news@hotmail.com> |
|---|---|
| Date | 2011-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]
| From | eric <cneric12lin0@gmail.com> |
|---|---|
| Date | 2011-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]
| From | Ian Collins <ian-news@hotmail.com> |
|---|---|
| Date | 2011-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]
| From | eric <cneric12lin0@gmail.com> |
|---|---|
| Date | 2011-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]
| From | "io_x" <a@b.c.invalid> |
|---|---|
| Date | 2011-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]
| From | Ian Collins <ian-news@hotmail.com> |
|---|---|
| Date | 2011-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]
| From | eric <cneric12lin0@gmail.com> |
|---|---|
| Date | 2011-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]
| From | "io_x" <a@b.c.invalid> |
|---|---|
| Date | 2011-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