--- "Kenneth J. Davis" <[EMAIL PROTECTED]> wrote: > CVS: > ---------------------------------------------------------------------- > CVS: Enter Log. Lines beginning with `CVS:' are > removed automatically > CVS: > CVS: Committing in . > CVS: > CVS: Modified Files: > CVS: ut_vector.cpp > CVS: > ---------------------------------------------------------------------- > temp cast away const so Windows builds again > > > Windows fails to build, more or less due to this > commit: > > 1.45 hippietrail Feb 4 00:12 > UT_Vector::addItem methods now take const void * to > diminish the need for casting. > > The exact error message is: > > ut_vector.cpp(146) : error C2440: '=' : cannot > convert from 'const void *' to 'void *' > Conversion loses qualifiers > > > The problem is that line 146 > m_pEntries[m_iCount++] = p; > is assigning a now (const void *) to a (void *). > > Now I could just cast away the constness, but that > seems bad. > I could also change m_pEntries to be an array of > (const void *), but then the constness would have > to be cast away when an item is retrieved (a least > for some items). > > So my question for C++ experts out there, how best > should I fix this? > Should I just cast away the constness and live with > it, or can you suggest a more palatable way to > correct the build?
Hi Kenneth. Oddly I didn't get any complaints from g++ even though it looks like it should've. But I have seen a huge amount of calls to the ut_vector class needing to cast away constness. This tells me that probably m_pEntries should be made const along with many of the member functions, and cast away const for deletion. It seems that the entries are not designed to be modifiable anyway which would support this. But I would also like to hear more from other C++ experts on proper const-correctness! > In the meantime this patch casts (C style to > hopefully force someone to reply) the (const void > *) to a (void *) and lets the build proceed. I would recommend for any tricky casts to always use reinterpret_cast since, at least on gcc, it gives warnings whereas c casts do not. Thus prompting the hackers to look into the cause once in a while. Also C casts are extremely difficult to grep for when you're working on const-correctness. Andrew Dunbar. > Thank you, > Jeremy > > > ===== http://linguaphile.sourceforge.net/cgi-bin/translator.pl http://www.abisource.com __________________________________________________ Do You Yahoo!? Everything you'll ever need on one web page from News and Sport to Email and Music Charts http://uk.my.yahoo.com
