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

VPS Starter Arubacloud
0 głosów
400 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ź 648 wizyt
pytanie zadane 24 lipca 2018 w C i C++ przez Krutek Początkujący (330 p.)
0 głosów
4 odpowiedzi 383 wizyt
pytanie zadane 29 grudnia 2016 w C i C++ przez Adrian Stasiak Początkujący (410 p.)
0 głosów
1 odpowiedź 106 wizyt
pytanie zadane 26 grudnia 2016 w C i C++ przez PryPry Nowicjusz (160 p.)

92,451 zapytań

141,261 odpowiedzi

319,073 komentarzy

61,853 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...