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

Jak odnieść się do nazwy obiektu?

Object Storage Arubacloud
0 głosów
248 wizyt
pytanie zadane 21 lutego 2016 w C i C++ przez k222 Nałogowiec (30,150 p.)
Bawię się trochę obiektówką w C++ i napotkałem na jedną rzecz której nie mogę znaleźć: mamy sobie jakąś klasę  i mamy obiekt tej klasy np. o nazwie obiekt1, no i teraz w tej klasie chcę zrobić metodę np. pokaz() która by wyświetlała wartość obiektu w sposób: obiekt1 ma wartosc: ... i właśnie jak odnieść się do nazwy obiektu na rzecz którego dana metoda została wywołana tak, żeby przy wywołanie obiekt2.pokaz() na ekranie pojawiło się: obiekt2 ma wartosc: ...?

3 odpowiedzi

+3 głosów
odpowiedź 21 lutego 2016 przez Buby Pasjonat (19,590 p.)
wybrane 21 lutego 2016 przez k222
 
Najlepsza

W języku C++ niestety bezpośrednio nie dostaniesz nazwy zmiennej. Możesz jednak to obejść, tworząc dodatkową składową np. obiekt klasy string, do którego zapiszesz nazwę obiektu. Szczerze nie polecam takiej praktyki, ale jeśli z jakiegoś powodu jest Ci to potrzebne, to:


#include <iostream>
#include <string>

class MyObject {
   private:
       std::string objectName;
       int value;
   
    public:
       MyObject(std::string objectName, int value){
          this->objectName = objectName;
          this->value = value;
       }

       void show(){
           std::cout << objectName << " ma wartosc: " << value << std::endl;
       }
};

int main(void){
    MyObject obiekt1("obiekt1", 25);
    obiekt1.show();
}

 

Jeśli jednak potrzebny jest Ci tylko licznik obiektów, to możesz stworzyć statyczną składową, która będzie przechowywać liczbę utworzonych obiektów np.


#include <iostream>
#include <string>

class MyObject {
   private:
       static int objectCounter;
       int value;
   
    public:
       MyObject(int value){
          this->value = value;
          objectCounter++;
       }

       void show(){
           std::cout << "Obiekt " << objectCounter << " ma wartosc: " << value << std::endl;
       }
};

int MyObject::objectCounter = 0;

int main(void){
    MyObject obiekt1(25);
    obiekt1.show();
    MyObject obiekt2(365);
    obiekt2.show();
}

Pozdrawiam! :)

+1 głos
odpowiedź 21 lutego 2016 przez Ehlert Ekspert (212,670 p.)

W IDE masz coś takiego jak Debugowanie. Poprzez nie, możesz sprawdzić każdą wartość każdej zmiennej. Od tego jest hermetyzacja danych, żeby nie wywalać ich na wierzch. Nie musisz wiedzieć jak działa komputer żeby z niego korzystać smiley

0 głosów
odpowiedź 21 lutego 2016 przez mmr0429 Bywalec (2,010 p.)
Nie wiem czy dobrze zrozumiałem pytanie, chodzi ci o wywołanie metody, czy może wywalenie na wierzch jakiejś wartości ?
Wywołanie metody:

obiekt1.metoda(); //zakładam że twoja metoda jest voidem.

Wywołanie zmiennej o nazwie "wielkosc"(chyba o to ci chodzi):

cout<<"Wielkosc obiektu1 to "<<obiekt1.wielkosc<<endl;
komentarz 21 lutego 2016 przez Ehlert Ekspert (212,670 p.)

Kolega chciał taki C++owy var_dump() smiley

komentarz 21 lutego 2016 przez k222 Nałogowiec (30,150 p.)

No właśnie chodzi o to żeby zamiast tego co napisałeś: 

cout<<"Wielkosc obiektu1 to "<<obiekt1.wielkosc<<endl;

było:

cout<<"Wielkosc "<<XXXXXXXX<<" to "<<obiekt1.wielkosc<<endl;

i w miejscu XXXXXXXX na się pojawić obiektu1 jeżeli metoda będzie wywołana dla obiektu1, obiektu2, jeżeli metoda będzie wywołana dla obiektu2, obiektu3 ...

ogólnie jak jest parę obiektów to żeby ta metoda sprawdziła i wypisała na rzecz którego została wywołana

Podobne pytania

+1 głos
1 odpowiedź 233 wizyt
+1 głos
3 odpowiedzi 539 wizyt
pytanie zadane 15 stycznia 2021 w PHP przez in.in Początkujący (270 p.)
0 głosów
1 odpowiedź 67 wizyt
pytanie zadane 11 lipca 2020 w JavaScript przez Bakkit Dyskutant (7,600 p.)

92,579 zapytań

141,429 odpowiedzi

319,657 komentarzy

61,962 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!

...