Tridy – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Tridy – C / C++ – Fórum – Programujte.comTridy – C / C++ – Fórum – Programujte.com

 

Omfg
~ Anonymní uživatel
5 příspěvků
19. 11. 2006   #1
-
0
-

Uz vazne nevim co s tim, je to nejaka banalni chyba, ale opravdu nevim jaka:

#include <iostream>

using namespace std;

class Savec
{
public:
Savec() {};
~Savec() {};
char VratJm() {return Jmeno;}
char ZadejJmeno(char jmeno2[20]) {Jmeno=jmeno2;}
protected:
char Jmeno;
};

class Lide : public Savec
{
public:
Lide() {};
~Lide() {};
void Zarvi() { cout << "Aaaaaaaa...."; }
};

int main()
{
Lide Ja;
char jmenom[20];
cin >> jmenom;
Ja.ZadejJmeno(jmenom[20]);
cout << Ja.VratJm();
cin.get();
cin.get();
return 0;
}

Nahlásit jako SPAM
IP: ...–
Jura_0
Stálý člen
19. 11. 2006   #2
-
0
-

To Omfg:



#include <iostream>
using namespace std;

class Savec
{
public:
Savec() {};
/*virtual*/~Savec() {};
const char* VratJm() const {return Jmeno;}
void ZadejJmeno(const char jmeno2[]) { // Jmeno=jmeno2;
strcpy(Jmeno, jmeno2);
}
protected:
char Jmeno[20];
};

class Lide : public Savec
{
public:
Lide() {};
/*virtual*/ ~Lide() {};
void Zarvi() { cout << "Aaaaaaaa...."; }
};

int main()
{
Lide Ja;
char jmenom[20];
cin >> jmenom;
Ja.ZadejJmeno(jmenom);//!!!!
cout << Ja.VratJm();
cin.get();
cin.get();
return 0;
}

Nezkouseno, jen jsem opravil to, co mi bilo do oci.

Nahlásit jako SPAM
IP: ...–
Omfg
~ Anonymní uživatel
5 příspěvků
19. 11. 2006   #3
-
0
-

To Jura_: Proč se nesmí použít to Jmeno=jmeno2?

Nahlásit jako SPAM
IP: ...–
Omfg
~ Anonymní uživatel
5 příspěvků
19. 11. 2006   #4
-
0
-

A proc zde

const char* VratJm() const {return Jmeno;}
musí byt ta hvezdička?

Nahlásit jako SPAM
IP: ...–
Marek0
Návštěvník
19. 11. 2006   #5
-
0
-

Omfg: jo

Nahlásit jako SPAM
IP: ...–
Pedro0
Stálý člen
19. 11. 2006   #6
-
0
-

To Omfg:
pretoze retazec je pole znakov, a pole je v C(++) len adresa prveho prvku (je to pointer na prvy prvok pola) a ak chces hodnotu pointra tak ho treba dereferencovat (to je ta *)
a nejde to tak pretoze v tej dobe uz jmeno2 zanika (je to lokalna premenna) cize jmeno by ukazovalo na nejaku cudziu pamat

Nahlásit jako SPAM
IP: ...–
Vsetci ste blazni, to len ja som lietadlo
Omfg
~ Anonymní uživatel
5 příspěvků
19. 11. 2006   #7
-
0
-

To PaLaDiN: V jake dobe jmeno2 zanika?? Nechapu :(

Nahlásit jako SPAM
IP: ...–
Jura_0
Stálý člen
19. 11. 2006   #8
-
0
-

To Omfg:
Sice nejsem PaLaDiN, ale snad mu to nebude vadit. Kazda promenna ma nejakou platnost(angl. scope, zivotnost, rikej tomu, jak chces), ktera pokud je lokalni a je bez modifikatoru static(to plati pro jayzk C) a neni vytvorena dynamicky, ma platnost jen v bloku k tomu vyhrazenem - v jazyku C je to pomoci {}, a do doby skonceni funkce.
Maly priklad ze nekecam(Pro hnidopichy - plati to i pro jednoduche datove typy, zvolil jsem tridu, aby bylo jasne, kdy se co vytvari a kdy nici ):



#include <cstdlib>
#include <iostream>

using namespace std;

class Omfg
{
const char* id;
public:
Omfg(const char * msg):id(msg) {cout << "Vytvarim " << id<< "objekt" <<endl;}
~Omfg(){cout << "Nicim " << id <<" objekt" << endl;}
};

Omfg o("globalni"); // vytvori globalni objekt - plati do skonceni programu
void fce()
{
Omfg o("uvnitr fce");//plati do skonceni fce
}
int main(int argc, char *argv[])
{
Omfg o1("lokalni");
{
Omfg o2("lokalni v bloku");
}
fce();
// tady uz o2 neexistuje
system("PAUSE");
return EXIT_SUCCESS;
}

----------------------------
Vystup z CMD:

C:>cd Dev-Cpp

C:Dev-Cpp>omfg.exe
Vytvarim globalniobjekt
Vytvarim lokalniobjekt
Vytvarim lokalni v blokuobjekt
Nicim lokalni v bloku objekt
Vytvarim uvnitr fceobjekt
Nicim uvnitr fce objekt
Pokračujte stisknutím libovolné klávesy...
Nicim lokalni objekt
Nicim globalni objekt

C:Dev-Cpp>

Nahlásit jako SPAM
IP: ...–
Omfg
~ Anonymní uživatel
5 příspěvků
19. 11. 2006   #9
-
0
-

To Jura_: A proc to u intu jde?

#include <iostream>
using namespace std;

class Savec
{
public:
Savec() {};
~Savec() {};
int VratVek() {return Vek;}
void ZadejVek(int vek2) {
Vek=vek2;
}
protected:
int Vek;
};

int main()
{
Savec Ja;
int vekm;
cin >> vekm;
Ja.ZadejVek(vekm);
cout << Ja.VratVek();
cin.get();
cin.get();
return 0;
}

Nahlásit jako SPAM
IP: ...–
Jura_
~ Anonymní uživatel
236 příspěvků
20. 11. 2006   #10
-
0
-
Nahlásit jako SPAM
IP: ...–
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, 115 hostů

Podobná vlákna

2 třídy — založil liamlim

Třídy — založil Ondra29

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ý