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

[C++] wskaźnik this na liście inicjalizacyjnej w konstruktorze

Ostatnio zmodyfikowano 2013-11-02 16:14
Autor Wiadomość
Pawel9218
Temat założony przez niniejszego użytkownika
[C++] wskaźnik this na liście inicjalizacyjnej w konstruktorze
» 2013-11-02 13:42:50
C/C++
class Punkt
{
    int x, y, z;
   
public:
    Punkt()
        : x( 0 )
        , y( 0 )
        , z( 0 )
    { }
    Punkt( int x, int y, int z )
        : this->x( x )
        , this->y( y )
        , this->z( z )
    { }
   
};

Dlaczego nie mogę użyć wskaźnika this robiąc konstruktor ? Chciałbym działać na tych samych zmiennych i nie wiem czemu taki zapis jest nieprzyjęty przez kompilator ;/
P-95075
Rafi
» 2013-11-02 14:37:16
Wskaźnika this używasz na istniejących obiektach, a przy konstruktorze jeszcze on nie istnieje. Pewnie miałeś na myśli listę inicjalizacyjną. Usuń wskaźniki this i powinno działać.
P-95079
Elaine
» 2013-11-02 14:57:11
Na liście inicjalizacyjnej powinny się znajdować same nazwy zmiennych, bez this->.
C/C++
Punkt( int x, int y, int z )
    : x( x )
    , y( y )
    , z( z )
{
}
P-95085
Pawel9218
Temat założony przez niniejszego użytkownika
» 2013-11-02 15:02:46
Ok ,rozumiem ,ale one nie będą się wzajemnie zasłaniać?
P-95087
Elaine
» 2013-11-02 15:41:35
Nie. Na liście inicjalizacyjnej są to jednoznacznie zmienne składowe klasy, wewnątrz nawiasów – parametry.
P-95091
Pawel9218
Temat założony przez niniejszego użytkownika
» 2013-11-02 15:59:52
Ok ,jeszcze ostatnia wątpliwość , takie coś za to działa : Punkt(int x,int y,int z){this->x=x;this->y=y;this->z=z;}
P-95093
den93
» 2013-11-02 16:14:02
No tak w ciele metody klasy (pomiędzy {}) można tak zrobić ale na liście inicjalizacyjnej konstruktora - nie.
P-95094
« 1 »
  Strona 1 z 1