The error message makes sense.
The declaration of TQListViewItemIterator
it(d->listView); occurs five times, each time in a different function.
Apparently in function slotAddImages the
declaration is seen twice. Once from the explicit declaration and once indirectly through a call to one of the other functions.
The first question is why gcc 4.7 doesn't like this
when previous versions have. The second question is how to fix. I understand the message, but lack the C++ skills to know the remedy. Probaby easy for the C++ gurus.
I 'think' it is this:
-> G++ now correctly implements the two-phase lookup
rules such that an unqualified name used in a template must have:
(1) an appropriate declaration found either in scope at
the point of definition of the template; or
(2) by argument-dependent lookup at the point of
instantiation.
The question is if you have (1) & (2) instead of
(1) | (2) do you get this redeclaration error??
The failure continues as of today. As Darrell pointed out, there are multiple declarations of 'TQListViewItemIterator it( d->listView )' in kipi-plugins/flickrexport/imageslist.cpp that are now both seen by gcc 4.7. Could one of the c/c++ gurus take a look at suggest how to make sure this is only seen once? Thanks.
I won't say for sure, but in commit 21705d1b 2012-04-05 where I cleaned some typos, that effort inadvertently created two identical declarations. The code never failed previously because the typos actually caused two different declarations, one of which was no longer being used. The remaining declaration one was abandoned in place, so to speak, but caused no harm. My typo scrubbing caused the two declarations to become identical. I had to fix that in commit 63df5ccd 2012-04-06.
Point being? Let the gurus decide but I think only one of the five declarations is being duplicated, but perhaps the solution is as simple as deleting the explicit declaration in function slotAddImages.
Darrell