In fact, this sort of conversion is explicitly mentioned in the C++ standard
in section 4.4:

[Note: if a program could assign a pointer of type T** to a pointer of type
const T** (that is, if line //1 below was allowed), a program could
inadvertently modify a const object (as it is done on line //2).  For
example,

int main() {
        const char c = 'c';
        char* pc;
        const char** pcc = &pc; //1: not allowed
        *pcc = &c;
        *pc = 'C';      //2: modifies a const object
}

-- end note]

Brad Town


> Donald,
>       First, a cv-qualifier is a "const", "volatile", or 
> "const volatile"
> qualifier on a type.  (If you have access to the C++ standard, it's in
> section 3.9.3.)
>       Second, your trouble is because gcc is being a little 
> more strict
> than the other compiler.  You need to add a "const" between 
> the two *'s in
> the return definition of the function.  Or, add "typedef 
> Foo** PPFoo" or the
> like and use that whenever you need to use the 
> pointer-to-pointer-to-Foo.
> 
> Brad Town
> 
> 
> > -----Original Message-----
> > From: Donald Brinkman [mailto:[EMAIL PROTECTED]]
> > Sent: Thursday, December 7, 2000 4:21 PM
> > To: [EMAIL PROTECTED]
> > Subject: cv-quals lack an intervening 'const'
> > 
> > 
> > Hello all . . .
> > 
> > I have been given the task of porting a small project from an IRIX
> > environment into a visual c++ compatible library.  To 
> > accomplish this I
> > decided to use Cygwin, since it has such nice utilities for 
> > creating DLLs.
> > Everything has been going fine, with only a few changes here 
> > and there,
> > until I stopped dead on this problem.  Given the member function:
> > 
> > const Foo** FooBar::getA() const
> >         {
> >         return ( A )
> >         }
> > 
> > where A is a const Foo**
> > 
> > I get the following message:
> > 
> > Return to const Foo** from Foo **const adds cv-quals without 
> > intervening
> > 'const'.
> > 
> > 
> > Now, please, can someone tell me just what a cv-qual is and 
> > why the compiler 
> > complains about this on Cygwin with gcc but not on IRIX with 
> > cc? Any help
> > would be greatly appreciated.
> > 
> > Donald Brinkman
> > 
> > 
> > --
> > Want to unsubscribe from this list?
> > Send a message to [EMAIL PROTECTED]
> > 
> 
> --
> Want to unsubscribe from this list?
> Send a message to [EMAIL PROTECTED]
> 

--
Want to unsubscribe from this list?
Send a message to [EMAIL PROTECTED]

Reply via email to