2012-12-04 8 views
8

Właśnie zacząłem przeglądać książkę dla początkujących w C++. Mam pewne doświadczenie Java (ale powiedział, że nigdy nie używałem domyślne argumenty w Javie, aby być uczciwym)Czy używam domyślnych argumentów niepoprawnie?

Tak, jak wspomniano, mój problem jest z domyślnymi argumentami ..

Jest to fragment kodu Używam:

#include <iostream> 

using namespace std; 

//add declaration 
int add(int a, int b); 

int main (void) 
{ 
     int number1; 

     cout << "Enter the first value to be summed: "; 
     cin >> number1; 
     cout << "\nThe sum is: " << add(number1) << endl; 
} 

int add(int a=10, int b=5) 
{ 
     return a+b; 
} 

odpowiedzi dostaję od g ++ kompilator jest „zbyt mało argumentów do funkcji 'int dodaj (int, int)'

robię to źle (mam? też wypróbowałem to z dosłownymi argumentami)

P.S. Nie mogę uzyskać fragmentu kodu do prawidłowego wyświetlania? Czy system się zmienił?

+4

Domyślne argumenty idą w deklaracji. Aby sformatować kod, wklej go, nie umieszczaj żadnych odsyłaczy, podświetl go wszystkie i kliknij przycisk {}. – chris

+2

Dziękuję wszystkim panom. Doceniam fakt, że mogę rozwiązać problem przez tę społeczność w ciągu kilku sekund. – yoonsi

Odpowiedz

14

To odwrót

//add declaration 
int add(int a=10, int b=5); 


int add(int a, int b) 
{ 
    return a+b; 
} 

§ 8.3.6 argumenty domyślne domyślny argumentem powinien być określony jedynie w parametr deklaracja-klauzuli deklaracji funkcji lub w template- parametr. Domyślny argument nie powinien być określony dla zestawu parametrów .

+7

Jeśli chcesz wiedzieć dlaczego, to dlatego, że kompilator musi znać wartości domyślne w witrynie wywołującej. Ciało funkcji może być w innym pliku, więc informacje nie będą dostępne. –

+0

również warto zauważyć, nazwa zmiennej, w tym przypadku "a", jest wymagana tylko w definicji funkcji (która zapewnia łatwiejszy odczyt i edycję, szczególnie gdy są rozdzielone plikami .h i .cpp). deklaracja powinna wyglądać następująco: int dodaje (int = 10, int = 5); 'a nagłówek definicji byłby po prostu' int add (int a, int b) '. Powinieneś również wyjąć półkolumnę po liście parametrów w definicji. –

+0

@LoganBesecker, dobre miejsce, naprawione, dziękuję – billz

Powiązane problemy