Definicja konstruktora
Ostatnio zmodyfikowano 2017-06-23 20:47
ziajek444 Temat założony przez niniejszego użytkownika |
Definicja konstruktora » 2017-06-23 19:15:28 Mam ciało klasy: #include "Car_H.h" #include <iostream> int tab[] = { 3, 3 }; Car::Car( int maxspeed_, int brakepower_ = 10, int acceleration_ = 10, int position_[] = tab ) : c_maxspeed( maxspeed_ ) { this->brakepower = brakepower_; this->acceleration = acceleration_; this->actualspeed = NULL; }
i gdzieś tam prototyp konstruktora : public: Car( int, int, int, int[] );
1. Chciałbym usunąć zmienną 'tab' i zamiast niej wprowadzać wartości z ręki. Próbowałem , int position_[] = { 3, 3 } ) ale nie chasa. 2. Problemem jest też fakt że gdy wprowadzę nie wszystkie argumenty to wyrzuca mi błąd. A właśnie po to przypisuje wartości początkowe już przy definicji konstruktora żeby nie musieć przeciążać konstruktora. Proszę podpowiedzcie gdzie jest błąd, bo z pewnością jest. Jak bym dobrze napisał to by działało. P.S. To działa: #include "Car_H.h"
int tab[] = { 1, 2 }; Car A1( 123, 3, 3, tab );
To już nie: #include "Car_H.h"
int tab[] = { 1, 2 }; Car A1( 123, 3 );
|
|
Monika90 |
» 2017-06-23 19:56:53 struct Position { int x, y; };
I teraz będziesz mógł zrobić to co chcesz. |
|
ziajek444 Temat założony przez niniejszego użytkownika |
» 2017-06-23 20:22:00 Monika90 :: Wykorzystam twój sposób, mimo że jeszcze nie czaje co miałaś na myśli.
Co do głównego problemu. Pisze to dla ludzi którzy się będą się z tym zmagać. Nazywa się to 'Default parameters'. W tym przypadku są to początkowe parametry konstruktora. W przypadku gdy nie deklarujemy jednocześnie z definicją (ciałem funkcji) musimy podać defaultowe parametry już w prototypie (deklaracji konstruktora lub metody). |
|
Monika90 |
» 2017-06-23 20:47:47 Chodziło o to żeby zamiast tablicy użyć struktury: Car( int max_speed, int acceleration = 10, Position pos = { 3, 3 } );
Tablica też może mieć domyślną wartość parametru, ale tablicę trzeba wtedy przekazywać przez referencję, struktura jest lepsza. |
|
« 1 » |