Předávání parametrů mezi třídami – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Předávání parametrů mezi třídami – C / C++ – Fórum – Programujte.comPředávání parametrů mezi třídami – C / C++ – Fórum – Programujte.com

 

Jonasberg
~ Anonymní uživatel
6 příspěvků
2. 5. 2013   #1
-
0
-

Ahoj.

Možná že se ptám na úplnou blbost, nevím, nejsem programátor. Ňákej ten rok programuju samostatně jen tak ze srandy, spíše jen přes funkce (procedurálně). Včera jsem začal s objekty, mohl by mi prosím někdo poradit?

Pokud předávám parametry mezi funkcemi, to je mi jasné (přes return, nebo pointery). Pokud předávám parametry v rámci jedné třídy - je to úplně stejné. Ale pokud předávám mezi třídami, jak na to?? Přes pointery??

Můžete mi prosím poradit??  

Popis kódu:

Pokud budu ve třídě Data, nemám problém. Načtu a , vytisknu a. Ale pokud proměnnou a potřebuju dostat ven ze třídy Data do třídy Results mám problém.

Jestli mi někdo s touhle banalitou dokáže poradit, budu rád.

Díky

#include <iostream>
using namespace std;

class Data
{
public:
  int a, b;
  int nacti_data() { 
    cout << "a = ";
    cin >> a;
  }
  void tiskni_data() {
    cout << "\na = " << a;
  }
};

class Results : public Data
{
public:      
  void tiskni_data(){
    cout << "\na = " << a;
  }  
};

int main()
{  
    Data a;
    a.nacti_data();
    a.tiskni_data();
    Results b;
    b.tiskni_data();
    
    return 0;
}
Nahlásit jako SPAM
IP: 90.180.63.–
KIIV
~ Moderátor
+43
God of flame
2. 5. 2013   #2
-
0
-

no nevim presne o co se snazis.. ale bud do results predat data, nebo rovnou do results data nacis...

tj   Results a;  a.nacti_data(); ...    kdyz to udelas jako ted, tak mas dve instance uplne jinych trid.. jen jedna je rozsireni druhe...  (a ruzny instance nevidi data cizi instance)

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Jonasberg
~ Anonymní uživatel
6 příspěvků
2. 5. 2013   #3
-
0
-

#2 KIIV
Jak říkám jsem jen oběktově začínající, možná se ptám na blbosti. Nevím, že to není možné.

Sestavil jsem totiž program, který mám tak na 1000 řádek, je celej napsán ve funkcích, bez žádných tříd. Rád bych se to naučil psát objektově, všichni říkaj, že se dnes jinak neprogramuje, já tedy nevím proč, protože na těch 1000 řádcích nemám jedinou třídu a fachá to   .

Ale chtěl bych se to naučit objektově (no jen proto, abych trochu vypadal že žiju v tomhle století   ), mám na to spoustu knih, ale jsem na to sám a žádná mi nevyhovuje (protože to je psaný pro větší kapacity).

Nevěděl bys o něčem, z čeho by se dobře učilo??

Nemám rád, když je v knize napsán jen část kódu (než to rozběhám, strávím nad tím týden).

Díky

Nahlásit jako SPAM
IP: 90.180.63.–
ingiraxo+15
Grafoman
2. 5. 2013   #4
-
0
-

Nevim jestli to chápu správně, ale ty teda chceš, aby třída Result obsahovala nebo mohla pracovat s tím, co třída Data?

Jinak je to jak ti psal KIIV, takto jak to máš teď se ti vytvoří 2 instance, kde každá ma vlastní data, takže jedno řešení může být třeba takto: 

class Data
{
public:
    void setData(const int a)
    {
        this->a = a;
    }

    int getData() const
    {
        return a;
    }

private:
    int a;
};

class Results
{
public:
    Results(Data data) : data(data) { }

    void writeData()
    {
        cout << "a = " << data.getData();
    }
private:
    Data data;
};

int main()
{  
    Data a;
    a.setData(10);
    cout << "a = " << a.getData();

    Results b(a);
    cout << endl;
    b.writeData();

    return EXIT_SUCCESS;
}
Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 1 host

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý