• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Inicjalizacja zmiennej w klasie C++

Object Storage Arubacloud
0 głosów
408 wizyt
pytanie zadane 26 marca 2021 w C i C++ przez Mavimix Dyskutant (8,390 p.)

Mam taki kod (w 3 plikach):

main.cpp

#include <iostream>
#include <string>
#include "Pies.h"

int main()
{
    Pies dog(4);
    dog.imie = "Brutus";
    dog.podajDane();
    return 0;
}

 

Pies.h

#ifndef PIES_H
#define PIES_H

#include <string>
#include <iostream>

class Pies
{
private:
    int nogi;
public:
    std::string imie;
    Pies(int ileNog);
    void podajDane();
};

#endif


 

Pies.cpp

#include "Pies.h"

imie = "Fafik";
nogi = 3;

Pies::Pies(int ileNog)
{
    this->nogi = ileNog;
}

void Pies::podajDane()
{
    std::cout << imie << " ma " << nogi << " nogi";
}

 

Problem polega na tym, że w pliku Pies.cpp kiedy próbuję nadać wartości zmiennych imie i nogi pojawia się bład. To samo gdy napiszę Pies::imie i Pies::nogi. W jaki sposób mogę zainicjalizować te zmienne, działać na nich w pliku Pies.cpp? Po zakomentowaniu tych dwóch lini program kompiluje się i działa bez problemu - w konsoli pojawia się napis "Brutus ma 4 nogi".

komentarz 26 marca 2021 przez tkz Nałogowiec (42,000 p.)
imie = "Fafik";
nogi = 3;
 

Dlaczego robisz to w ten sposób?

komentarz 26 marca 2021 przez Mavimix Dyskutant (8,390 p.)
Prawdę mówiąc dopiero zaczynam przygodę z obiektówką. Tutaj jest to po prostu dydaktyczny przykład. Powinienem zrobić to w inny sposób?

1 odpowiedź

0 głosów
odpowiedź 26 marca 2021 przez Psz3mo Mądrala (5,030 p.)
 
Pies::Pies(int ileNog)
{
    imie = "Fafik";
    this->nogi = ileNog;
}

A próbowałeś tak?

komentarz 26 marca 2021 przez Mavimix Dyskutant (8,390 p.)
W ten sposób działa, faktycznie ma to sens, żeby w konstruktorze inicjalizować zmienne. Ale wydaje mi się, że z czasem może się pojawić potrzeba edycji wartości zmiennej poza metodą, konstruktorami itp... Jest taka możliwość w C++?
komentarz 26 marca 2021 przez tkz Nałogowiec (42,000 p.)
komentarz 26 marca 2021 przez mokrowski Mędrzec (155,460 p.)
Pies::Pies(int ileNog)
    : imie("Fafik"), nogi(ileNog)
{ }

 

komentarz 26 marca 2021 przez Mavimix Dyskutant (8,390 p.)
Czyli rozumiem że nie ma możliwości edycji wartości zmiennej poza metodą, konstruktorami itp...? Trzeba to zrobić w jakiejś metodzie, tak?
komentarz 26 marca 2021 przez tkz Nałogowiec (42,000 p.)
W praktyce publiczne pola umożliwiają zmianę wartości, ale w teorii nie powinno się tego robić.

Podobne pytania

+1 głos
1 odpowiedź 132 wizyt
pytanie zadane 10 sierpnia 2019 w JavaScript przez wsnofi Bywalec (2,680 p.)
0 głosów
0 odpowiedzi 486 wizyt
0 głosów
1 odpowiedź 2,390 wizyt
pytanie zadane 21 czerwca 2017 w JavaScript przez crova Użytkownik (940 p.)

92,543 zapytań

141,387 odpowiedzi

319,500 komentarzy

61,929 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...