argument domyślny w funkcji - błąd kompilacji

0

Witam, chciałem się zapytać, czemu gdy definiuję funkcję w pliku głównym nad funkcją main z argumentem domyślnym to jest wszystko ok, a jak zadeklaruję tą funkcję w pliku nagłówkowym (z podaniem parametru):

double fun(double = 2.0);

oraz w oddzielnym pliku cpp z funkcjami (również z podaniem parametru):

double fun(double x = 2.0)
	{
	return x*x;
	}

to wyskakuje mi następujący błąd kompilacji:

error C2572: 'fun' : redefinition of default parameter : parameter 1

0

w deklaracji przekazuje się kompilatorowi tylko typ argumentu

1

wartość parametru podajesz raz.

double fun(double x=2.0);

double fun(double x)
{
  ...
}
0
Sopelek napisał(a):

w deklaracji przekazuje się kompilatorowi tylko typ argumentu

Żeby każdy mógł używać wartości domyślnej dla argumentów funkcji to wartość ta musi być w deklaracji, która będzie np. w pliku nagłówkowym. Oczywiście może też być w definicji (ma to niewielki sens), ale nigdy w dwóch miejscach jednocześnie.

1
Endrju napisał(a):

Oczywiście może też być w definicji (ma to niewielki sens), ale nigdy w dwóch miejscach jednocześnie.
A nawet w 10-ciu miejscach.

int main()
  {
     {
      void f(int x=1); f();
     }
     {
      void f(int x=2); f();
     }
     {
      void f(int x=3); f();
     }     
   return 0;
  }

void f(int x) { cout<<x<<endl; }

Ale przy rozdzielnej definicji i deklaracji nie wolno w deklaracji.

0

dzięki

1 użytkowników online, w tym zalogowanych: 0, gości: 1