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

Wywołanie w metodzie klasy nr 1 metody z klasy nr 2.

Object Storage Arubacloud
0 głosów
403 wizyt
pytanie zadane 16 czerwca 2015 w C i C++ przez tarnasm Gaduła (3,030 p.)
Witajcie.

Podpowiedzcie mi proszę w jaki sposob wywołać metode będąca voidem z klasy nr2 w klasie nr 1 ale równiez w voidzie.

Pozdrawiam.

3 odpowiedzi

0 głosów
odpowiedź 16 czerwca 2015 przez Dorion300 Szeryf (90,250 p.)
Można zaprzyjaźnić klasy albo udostępnić publicznie.
komentarz 16 czerwca 2015 przez tarnasm Gaduła (3,030 p.)

To wiem. Chodzi mi już o sam kod. Ja robie to tak:

void Klasa1::Metoda()
{
case '1': Klasa2::Metoda(); break;
}

i kompilator zgłasza błąd.

 

komentarz 16 czerwca 2015 przez Radfler VIP (101,030 p.)
Co? Case w środku funkcji? To Twój kod czy tylko przykład?
komentarz 16 czerwca 2015 przez tarnasm Gaduła (3,030 p.)
To mój. Switch w funkcji to zakazana opcja?
komentarz 16 czerwca 2015 przez Radfler VIP (101,030 p.)

Nie, nie tylko jak dla mnie to powinno wyglądać tak:

void Klasa1::Metoda() {
    switch(/*jakaś zmienna*/) {
        case '1': Klasa2::Metoda(); break;
    }
}

Sam case bez switcha nie istnieje ;)

komentarz 16 czerwca 2015 przez Dorion300 Szeryf (90,250 p.)
1. metoda musi być statyczna. W przykładzie nie ma żadnego switch'a
komentarz 16 czerwca 2015 przez tarnasm Gaduła (3,030 p.)
A to się nie zrozumielismy:D Istnienie switcha pominąłem w tym przykladowym kodzie celowo. Ale wielkie dzięki za czujność :)
0 głosów
odpowiedź 16 czerwca 2015 przez Radfler VIP (101,030 p.)

Metoda() w Klasa2 musi być statyczna! Jeżeli nie jest to musisz utworzyć obiekt tej klasy i wywołać tą funkcję na rzecz tego obiektu:

Klasa2 obiekt;
obiekt.Metoda();
0 głosów
odpowiedź 5 listopada 2015 przez s92 Bywalec (2,300 p.)
Sorki że odgrzewam kotleta, ale mam pytanie czy można w metodzie z Klasy2 przesłać jako argument metody obiekt Klasy1 ?
komentarz 5 listopada 2015 przez furas Maniak (53,800 p.)
Ale jakiego kodu (której linijki) to się dotyczy ?
komentarz 5 listopada 2015 przez furas Maniak (53,800 p.)
#include <iostream>
#include "klasa1.h"
#include "klasa2.h"

using namespace std;

int main()
{
    PierwszaKlasa pierwsza = PierwszaKlasa();
    DrugaKlasa druga = DrugaKlasa();

    pierwsza.Metoda(druga);

    return 0;
}

klasa1.h

#include "klasa2.h"

#ifndef KLASA1_H
#define KLASA1_H

class PierwszaKlasa
{
public:
    void Metoda(const DrugaKlasa&);
};

#endif

klasa1.cpp

#include <iostream>
#include "klasa1.h"

using namespace std;

void PierwszaKlasa::Metoda(const DrugaKlasa& klasa)
{
    cout << klasa.zmienna;
}

klasa2.h

#ifndef KLASA2_H
#define KLASA2_H

class DrugaKlasa
{
public:
    int zmienna;

    DrugaKlasa();
};

#endif

klasa2.cpp

#include "klasa2.h"

DrugaKlasa::DrugaKlasa()
{
    zmienna = 42;
}

 

komentarz 5 listopada 2015 przez s92 Bywalec (2,300 p.)

Teraz działa. Możesz mi powiedzieć po co są te:

#ifndef 

#define 

komentarz 5 listopada 2015 przez furas Maniak (53,800 p.)
W programie kilka razy muszę includować ten sam plik - jeśli nie dam tych linii preprocesora to będzie ten sam kod dodawało kilka razy i kompilator stwierdzi, że mam dwie klasy/funkcje/zmienne o takiej samej nazwię - więc jest coś nie tak.
komentarz 5 listopada 2015 przez s92 Bywalec (2,300 p.)
A Ok! Dzięki wielkie za pomoc!

Podobne pytania

0 głosów
1 odpowiedź 651 wizyt
pytanie zadane 24 lipca 2018 w C i C++ przez Krutek Początkujący (330 p.)
0 głosów
4 odpowiedzi 389 wizyt
pytanie zadane 29 grudnia 2016 w C i C++ przez Adrian Stasiak Początkujący (410 p.)
0 głosów
1 odpowiedź 107 wizyt
pytanie zadane 26 grudnia 2016 w C i C++ przez PryPry Nowicjusz (160 p.)

92,551 zapytań

141,393 odpowiedzi

319,523 komentarzy

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

...