From: hhkraemer AT web DOT de (Horst Kraemer) Newsgroups: comp.os.msdos.djgpp Subject: Re: char*[] -> const char** conversion Date: Thu, 02 Aug 2001 00:22:01 GMT Lines: 59 Message-ID: <3b68971b.2701444@news.cis.dfn.de> References: <90EFCD60BNiklasPsonnospamhotm AT 130 DOT 235 DOT 20 DOT 4> NNTP-Posting-Host: pd9002135.dip.t-dialin.net (217.0.33.53) X-Trace: fu-berlin.de 996711706 3722028 217.0.33.53 (16 [27606]) X-Newsreader: Forte Free Agent 1.21/32.243 To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Reply-To: djgpp AT delorie DOT com On 31 Jul 2001 17:16:31 GMT, Niklas_Pson AT nosmam DOT hotmail DOT com (Niklas Pettersson) wrote: > djgpp AT delorie DOT com (Eli Zaretskii) wrote in > >I think this is a standard issue with C++: const char and char are not > >the same, and you aren't allowed to mix them. Even C compilers print > >warnings about that nowadays. > > > > Hm..Eli is right about that const char and char are different types in C++ > but I think that the code given should work.. Const char * in the function > prototype just says that the function cannot change the parameter, but a > non const char can still be passed as an actual parameter. But the otherway > around is an error of course.. Please note that is not an assignment of a char * to a char const * which is always safe and converted implicitly but an assignemnt of a char ** to a char const ** which is _not_ safe and therefore not done implicitly. Take this standard example: #include int main() { char nc[] = "NONCONST"; char const *cp = "CONST"; char* p = nc; // OK char **pp = &p ; // OK char const **cpp = pp; // assume that this assignment would // be OK implicitly *cpp = cp; // OK because *cpp is a char const* **pp ='X'; // oops, This is changing the first character of "CONST". The program might crash... puts(*pp); // ??? return 0; } Regards Horst