• 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.

0 głosów
132 wizyt
pytanie zadane 16 czerwca 2015 w C i C++ przez użytkownika tarnasm Bywalec (2,950 punkty)
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 użytkownika Dorion300 Szeryf (85,890 punkty)
Można zaprzyjaźnić klasy albo udostępnić publicznie.
komentarz 16 czerwca 2015 przez użytkownika tarnasm Bywalec (2,950 punkty)

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 użytkownika Radfler Szeryf (93,640 punkty)
Co? Case w środku funkcji? To Twój kod czy tylko przykład?
komentarz 16 czerwca 2015 przez użytkownika tarnasm Bywalec (2,950 punkty)
To mój. Switch w funkcji to zakazana opcja?
komentarz 16 czerwca 2015 przez użytkownika Radfler Szeryf (93,640 punkty)

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 użytkownika Dorion300 Szeryf (85,890 punkty)
1. metoda musi być statyczna. W przykładzie nie ma żadnego switch'a
komentarz 16 czerwca 2015 przez użytkownika tarnasm Bywalec (2,950 punkty)
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 użytkownika Radfler Szeryf (93,640 punkty)

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 użytkownika s92 Obywatel (1,740 punkty)
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 użytkownika furas Maniak (53,960 punkty)
Ale jakiego kodu (której linijki) to się dotyczy ?
komentarz 5 listopada 2015 przez użytkownika furas Maniak (53,960 punkty)
#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 użytkownika s92 Obywatel (1,740 punkty)

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

#ifndef 

#define 

komentarz 5 listopada 2015 przez użytkownika furas Maniak (53,960 punkty)
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 użytkownika s92 Obywatel (1,740 punkty)
A Ok! Dzięki wielkie za pomoc!

Podobne pytania

0 głosów
4 odpowiedzi 63 wizyt
pytanie zadane 29 grudnia 2016 w C i C++ przez użytkownika Adrian Stasiak Początkujący (370 punkty)
0 głosów
1 odpowiedź 38 wizyt
pytanie zadane 26 grudnia 2016 w C i C++ przez użytkownika PryPry Nowicjusz (160 punkty)
0 głosów
1 odpowiedź 78 wizyt
pytanie zadane 13 listopada 2016 w C i C++ przez użytkownika Evelek Stary wyjadacz (11,970 punkty)
...