Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Definicja konstruktora

Ostatnio zmodyfikowano 2017-06-23 20:47
Autor Wiadomość
ziajek444
Temat założony przez niniejszego użytkownika
Definicja konstruktora
» 2017-06-23 19:15:28
Mam ciało klasy:
C/C++
#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 :

C/C++
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:
C/C++
#include "Car_H.h"
//main() itd.
int tab[] = { 1, 2 };
Car A1( 123, 3, 3, tab );

To już nie:
C/C++
#include "Car_H.h"
//main() itd.
int tab[] = { 1, 2 };
Car A1( 123, 3 );
P-162788
Monika90
» 2017-06-23 19:56:53
C/C++
struct Position
{
    int x, y;
};

I teraz będziesz mógł zrobić to co chcesz.
P-162789
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).
P-162790
Monika90
» 2017-06-23 20:47:47
Chodziło o to żeby zamiast tablicy użyć struktury:
C/C++
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.
P-162791
« 1 »
  Strona 1 z 1