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

Jak wyciągnąć z metody tylko jedną wartość a nie całość?

Object Storage Arubacloud
+1 głos
400 wizyt
pytanie zadane 8 marca 2016 w C i C++ przez zirael [PL] Mądrala (5,200 p.)

Hej, mam taki problem otóż mam utworzoną metodę w klasie, a teraz w pliku main.cpp przy tworzeniu obiektu zamiast wyświetlać całą metodę, chciałbym odwołać się tylko do jednego jej elementu.

coś takiego:

#include <iostream>

using namespace std;

class Pracownik
{
    public:
    string imie_pracownika;
    string nazwisko_pracownika;
    string stanowisko;
    string wynagrodzenie;

void StworzPracownika()
{
    cout << "Podaj imie: "; cin >> imie_pracownika;
    cout << endl;
    cout << "Podaj nazwisko: "; cin >> nazwisko_pracownika;
    cout << endl;
    cout << "Stanowisko pracownika: "; cin >> stanowisko;
    cout << endl;
    cout << "Wynagrodzenie: "; cin >> wynagrodzenie;

}

void WyswietlPracownika()
{
    cout << "Imie pracownika: " << imie_pracownika << endl;
    cout << "Nazwisko pracownika: " << nazwisko_pracownika << endl;
    cout << "Stanowisko: " << stanowisko << endl;
    cout << "Pensja: " << wynagrodzenie << "zl" << endl;
}

};


int main()
{

Pracownik p1;

p1.StworzPracownika();
//p1.WyswietlPracownika();

//potrzebuje tylko jego imienia z metody
p1.imie_pracownika;


return 0;
}

 

5 odpowiedzi

+1 głos
odpowiedź 8 marca 2016 przez Aisekai Nałogowiec (42,190 p.)
Są dwie znane mi możliwości: 1. Możesz skorzystać z tego, że pola w klasie są publiczne i dostać się przez operatora '.' Np p1.imiepracownika; 2. Możesz zrobić metodę która będzie zwracać imię pracownika. Metoda będzie metodą publiczną typu string. Tak radzę Ci to zrobić, bo potem Ci będzie łatwiej :)
0 głosów
odpowiedź 8 marca 2016 przez Ceki Mądrala (5,310 p.)
Co rozumiesz poprzez "jeden element funkcji"? Pozdrawiam.
komentarz 8 marca 2016 przez zirael [PL] Mądrala (5,200 p.)
to mam zrobić coś takiego? p1.WyswietlPracownika(imie_pracownika); ?
komentarz 8 marca 2016 przez Aisekai Nałogowiec (42,190 p.)
Coś takiego oznacza że na p1 będzie wywołana metoda, której podeslesz wartość zmiennej imie_pracownika
komentarz 8 marca 2016 przez zirael [PL] Mądrala (5,200 p.)
to jak mogę powołać się na konkretną wartość w metodzie? utworzyłem obiekt o nazwie p1, stworzyłem pracownika, natomiast chcę wyświetlić tylko jego imię. Nie wiem zupełnie jak jeszcze inaczej mogę to zapisać ;/
komentarz 8 marca 2016 przez Aisekai Nałogowiec (42,190 p.)
Na dole Ci napisałem. Najprościej: string pobierzImie() { return imie_pracownika; }
komentarz 8 marca 2016 przez zirael [PL] Mądrala (5,200 p.)

przepraszam ale nie do końca rozumiem jak to zapisać. Chyba jestem już przemęczony na dzisiaj, coś takiego ma to wyglądać?

int main()
{

Pracownik p1;

p1.StworzPracownika();

string p1.WyswietlPracownika()
{
    return p1.imie_pracownika;
}

return 0;
}

 

komentarz 8 marca 2016 przez Aisekai Nałogowiec (42,190 p.)
Nie. W klasie pracownik tworzysz tą metodę którą Ci napisałem na górze. A potem wywołujesz ją dla obiektu p1 używając kropki (.). Czyli : class Pracownik { //twój kod Metoda string zwracajaca imię pracownika. }
komentarz 8 marca 2016 przez zirael [PL] Mądrala (5,200 p.)

zrobiłem jak mówiłeś, ale niestety nie działa, nic nie zwraca ta metoda

class Pracownik
{
    public:
    string imie_pracownika;
    string nazwisko_pracownika;
    string stanowisko;
    string wynagrodzenie;

// moje metody

   string pobierzImie()
{
    return imie_pracownika;
}

};


int main()
{

Pracownik p1;

p1.StworzPracownika();

p1.pobierzImie();

 

komentarz 8 marca 2016 przez Aisekai Nałogowiec (42,190 p.)
Jutro jak wrócę ze szkoły, to to z kompilatorem zrobię. Tylko mam pytanie: nie zwraca czy nie wyświetla? Bo to jest różnica
0 głosów
odpowiedź 8 marca 2016 przez niezalogowany
Cala Twoja klasa jest publiczna wiec możesz to zrobic na pomocą operatora kropki
komentarz 8 marca 2016 przez zirael [PL] Mądrala (5,200 p.)
Właśnie próbowałem tak zrobić p1.imie_pracownika, ale też nie działa. Poza tym z czasem pewne atrybuty będę chciał mieć prywatne jak wynagrodzenie, pesel czy numer_telefonu, dlatego szukam rozwiązania dla konkretnych wartości potrzebnych w danej chwili, a nie dla całych metod :/
komentarz 8 marca 2016 przez Aisekai Nałogowiec (42,190 p.)
Czemu nie działa?
komentarz 8 marca 2016 przez zirael [PL] Mądrala (5,200 p.)
nie zwraca żadnego błędu, ale atrybut pomimo że przy wczytaniu dostaje dane, przy zwracaniu jest już pusty.
0 głosów
odpowiedź 8 marca 2016 przez Gandalf Obywatel (1,260 p.)
Generalnie ja też jestem laikiem (dopiero uczę się obiektowości), ale tak jak kolega pyta jest inny sposób żeby zwracać wartość z metody WyswietlPracownika() a nie tworzyć nową ze słowem kluczowym return?

w PHP można odwołać się do poszczególnego elementu za pomocą -> z tego co pamiętam :D
komentarz 8 marca 2016 przez Aisekai Nałogowiec (42,190 p.)
Na razie nie znam innego rozwiązania. Może jest, ale sam się dopiero uczę i to co ogarniam staram się pomagać imnym
0 głosów
odpowiedź 8 marca 2016 przez criss Mędrzec (172,590 p.)
Ekhm, nie da się tego zrobić. Nawet nie istnieje takie coś jak element metody. Piszesz je sam po to, żebyś mógł napisać takie jak ci pasują... więc pisz takie jak ci pasują :P Możesz zrobić np. dla każdego pola osobną metode wyświetlającą (a najlepiej po prstu zwracającą stringa - bardziej uniwersalnie), a w metodzie wyswietlPracownika po prstu korzystać ze wszystkich czterech.

Podobne pytania

0 głosów
1 odpowiedź 825 wizyt
0 głosów
2 odpowiedzi 255 wizyt
pytanie zadane 23 marca 2017 w C i C++ przez Konrad Nabożny Stary wyjadacz (13,460 p.)
0 głosów
1 odpowiedź 355 wizyt
pytanie zadane 11 stycznia 2020 w Java przez MatiiMann Nowicjusz (150 p.)

92,662 zapytań

141,557 odpowiedzi

320,002 komentarzy

62,029 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

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!

...