[Insight-developers] compiling problems

Paul Hughett hughett@mercur.uphs.upenn.edu
Thu, 11 Jan 2001 09:47:25 -0500


> Compiling...
> itkAffineTransformTest.cxx
> C:/Users/zhg/Insight/Code/Common+AFw-itkAffineTransform.txx(127) : error =
> C2572: 'Compose' : redefinition of default parameter : parameter 2
>         C:/Users/zhg/Insight/Code/Common+AFw-itkAffineTransform.h(212) : =
> see declaration of 'Compose'
> C:/Users/zhg/Insight/Code/Common+AFw-itkAffineTransform.txx(145) : error =
> C2572: 'Translate' : redefinition of default parameter : parameter 2
>        C:/Users/zhg/Insight/Code/Common+AFw-itkAffineTransform.h(221) : =
> see declaration of 'Translate'

This code compiles without problems on the Unix systems.  It appears that
what the Microsoft compiler is complaining about is that a default parameter
is specified in both the declaration and the definition of a method; e.g.


    // Declaration in *.h
    void
    AffineTransform<ScalarType, NDimensions>::
    Compose(
        const Self &other,
        bool pre=0);


    // Definition in *.txx
    void
    AffineTransform<ScalarType, NDimensions>::
    Compose(
        const Self &other,
        bool pre=0)
    {...}


Can someone more knowledgeble in C++ determine whether the code here
is wrong or whether the MS compiler is wrong?  And, in either case,
what should we do about it?


Paul Hughett