delorie.com/archives/browse.cgi | search |
From: | "John Harrison" <jahhaj AT bigfoot DOT com> |
Newsgroups: | comp.lang.c++,comp.os.msdos.djgpp |
References: | <f6Yt5.55$t42 DOT 3484 AT nsw DOT nnrp DOT telstra DOT net> |
Subject: | Re: passing istringstream as istream in param |
Lines: | 65 |
X-Priority: | 3 |
X-MSMail-Priority: | Normal |
X-Newsreader: | Microsoft Outlook Express 5.50.4133.2400 |
X-MimeOLE: | Produced By Microsoft MimeOLE V5.50.4133.2400 |
Message-ID: | <4j%t5.6782$vo6.96767@news2-win.server.ntlworld.com> |
Date: | Fri, 8 Sep 2000 07:03:21 +0100 |
NNTP-Posting-Host: | 213.104.182.96 |
X-Complaints-To: | abuse AT ntlworld DOT com |
X-Trace: | news2-win.server.ntlworld.com 968393024 213.104.182.96 (Fri, 08 Sep 2000 07:03:44 BST) |
NNTP-Posting-Date: | Fri, 08 Sep 2000 07:03:44 BST |
Organization: | ntlworld News Service |
To: | djgpp AT delorie DOT com |
DJ-Gateway: | from newsgroup comp.os.msdos.djgpp |
Reply-To: | djgpp AT delorie DOT com |
"Mostyn Lee" <mostyn AT ibc DOT com DOT au DOT SPAM> wrote in message news:f6Yt5.55$t42 DOT 3484 AT nsw DOT nnrp DOT telstra DOT net... > i used flex to generate a parser c++ class, and this class requires a > istream * as its parameter > > yyFlexLexer::yyFlexLexer( istream* arg_yyin, ostream* arg_yyout ) > > i need to parse from a character buffer, and have created a istringstream. > the object will not accept the istringstream as a valid type parameter. > i am using visual c++ 6.0 with a GNU flex generated class > > > #include <iostream> > #include <string> > #include <sstream> > // .... > using namespace std; > // .... > > string constructstring = ReturnsAString(); > istringstream lexingstream(constructstring); > lexingstream << constructstring; > > yyFlexLexer myyyFlexLexer(&lexingstream, std::cout); > // .... > > gets the error : > error C2664: '__thiscall yyFlexLexer::yyFlexLexer(class istream *,class > ostream *)' : cannot convert parameter 1 from 'class > std::basic_istream<char,struct std::char_traits<char> > *' to 'class istream > *' > > i have tried several things > : i have tried to declare a istream to copy the data into, but i always get > an "ambiguous symbol `istream` " error > : i have tried using various `using` and direct (std::istream) methods, but > all have errors > > do I need some sort of casting? > am I #including something wrong? > why cant I just declare, > istream streamname; I'd guess that your flex generated files are using the old style iostream library. Take a look in the generated files and if you see #include <iostream.h> replace it with #include <iostream> // no .h using namespace std; In Visual C++ the non-standard <iostream.h> and the standard <iostream> are not identical so you may find that you have to do a little more tweaking of the code. john
webmaster | delorie software privacy |
Copyright © 2019 by DJ Delorie | Updated Jul 2019 |