On 04/17/2012 06:22 PM, David C. Rankin wrote:
Darrell, all
I'm making an attempt at fixing k3b for gcc47. If anyone else has already done
this please stop me. It is part of bug 958.
This is another redeclaration issue, but it is not the same type of simple
iterator issue I've seen earlier. The build of k3b fails on gcc47 with:
k3baudioeditorwidget.cpp: In member function 'virtual void
K3bAudioEditorWidget::mousePressEvent(TQMouseEvent*)':
k3baudioeditorwidget.cpp:674:12: error: redeclaration of
'K3bAudioEditorWidget::Range* r'
k3baudioeditorwidget.cpp:668:14: error: 'K3bAudioEditorWidget::Range* r'
previously declared here
It is complaining about 'r' being declared twice below. This looks more like a
reassignment than a redeclaration to me. How do we properly fix it?. If all we
care about here is 'r' having function scope, can't I just get rid of the
'Range* ' typecast following the else { ? Or do I have to change 'r' to
'not_r'
following the else?
void K3bAudioEditorWidget::mousePressEvent( TQMouseEvent* e )
{
m_draggedRange = 0;
m_draggedMarker = 0;
bool end;
if( Range* r = findRangeEdge( e->pos(), &end ) ) {
m_draggedRange = r;
m_draggingRangeEnd = end;
setSelectedRange( r );
}
else {
Range* r = findRange( e->pos() );
d->movedRange = r;
d->lastMovePosition = posToMsf( e->pos().x() );
setSelectedRange( r );
m_draggedMarker = findMarker( e->pos() );
}
TQFrame::mousePressEvent(e);
}
As long as it is just used in mousePressEvent, can't I just do:
else {
r = findRange( e->pos() );
Obviously, the compiler is taking the 'if( Range* r' as the declaration, so it
should still know what 'r' is after the else.... What say the experts...
--
David C. Rankin, J.D.,P.E.