Fonction avec arguments par défaut
Résolu
Bonjour,
J'ai un simple problème avec mon constructeur
complex::complex(double c1=0.0,double c2=0.0):real(c1),imaginary(c2)
{}
apparemment celui-ci n'accepte pas es valeurs par défaut
message d'erreur:
default argument given for parameter 1 of 'complex::complex(double, double)' [-fpermissive]|
J'utilise la dernière version de code::blocks.
Merci pour votre aide
J'ai un simple problème avec mon constructeur
complex::complex(double c1=0.0,double c2=0.0):real(c1),imaginary(c2)
{}
apparemment celui-ci n'accepte pas es valeurs par défaut
message d'erreur:
default argument given for parameter 1 of 'complex::complex(double, double)' [-fpermissive]|
J'utilise la dernière version de code::blocks.
Merci pour votre aide
1 réponse
-
Chez moi ceci compile sans problème :
class complex_t { private: double real; double imag; public: complex_t(double real0 = 0, double imag0 = 0): real(real0), imag(imag0) {} }; int main() { return 0; }
... avec :
(mando@silk) (~) $ g++ --version g++ (Debian 4.7.2-4) 4.7.2 Copyright (C) 2012 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Autre syntaxe (.hpp + .cpp) :
// complex.hpp #ifndef COMPLEX_HPP #define COMPLEX_HPP #include <ostream> class complex_t { private: double real; double imag; public: complex_t(double real0 = 0, double imag0 = 0); double get_real() const; double get_imag() const; }; inline std::ostream & operator << ( std::ostream & out, const complex_t & c ) { out << c.get_real() << " + " << c.get_imag() << ".i"; } #endif // complex.cpp #include "complex.hpp" complex_t::complex_t(double real0, double imag0): real(real0), imag(imag0) {} double complex_t::get_real() const { return real; } double complex_t::get_imag() const { return imag; } // main.cpp #include <iostream> #include "complex.hpp" int main() { complex_t c1; complex_t c2(4, 5); std::cout << "c1 = " << c1 << std::endl << "c2 = " << c2 << std::endl; return 0; }
Résultat :
(mando@silk) (~) $ g++ -c complex.cpp (mando@silk) (~) $ g++ toto.cpp complex.o (mando@silk) (~) $ ./a.out c1 = 0 + 0.i c2 = 4 + 5.i
Peut-être que ton erreur c'est de redonner l'initialisation dans le ".cpp" ? Normalement les valeurs par défaut ne sont données que dans le ".hpp" (plus exactement dans la déclaration) et ne sont pas rappeler dans le ".cpp" (dans l'implémentation).
Bonne chance