Předávání argumentů dceřiné třídě – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Předávání argumentů dceřiné třídě – C / C++ – Fórum – Programujte.comPředávání argumentů dceřiné třídě – C / C++ – Fórum – Programujte.com

 

Sony0
Návštěvník
15. 11. 2007   #1
-
0
-

nevíte někdo jak se dá udělat odvozená třída která by nadřazené třídě předávala do konstruktoru char?
asi to bude hrozně jednoduchý ale nějak sem se v tom zasek..

de o to že sem si udělal třídu k objektům který by se podle typu lišily v jedné funkci(kterou sem si nastavil jako virtuální) a proto chci udělat ještě podtřídu která překryje tu virtuální funkci,takže vlastně budu mít stejný objekty co budou dělat jiný věci..jnmže už v tý první třídě mam v konstruktoru jako argument char a ten samozřejmě musim mít i v argumentech té podtřídy. jenomže jak tomu mám předat celý slovo když, když to nastavim jako pole tak to nepředá celý slovo a když to nenastavim jako pole tak to zas nebere protože to nemuže převádět mezi char a char[]

Nahlásit jako SPAM
IP: 62.177.83.–
jinaq0
Newbie
16. 11. 2007   #2
-
0
-

Zkoušel si tuto verzi?

konstruktor:



Podrida (char m) : Rodic(m)
{
...
}


a nebo



Podrida (char m)
{
Rodic(m); // na prvním řádku konstruktoru
...
}


Doufám, že si to ještě pamatuju správně.

Nahlásit jako SPAM
IP: 89.102.105.–
Jura
~ Anonymní uživatel
637 příspěvků
16. 11. 2007   #3
-
0
-

Zdravím,

jinaq má pravdu pouze v tom prvním případě. Nicmeně jsem nějak nepbral poslední odstavec, respektive:
"jenomže jak tomu mám předat celý slovo když, když to nastavim jako pole tak to nepředá celý slovo a když to nenastavim jako pole tak to zas nebere protože to nemuže převádět mezi char a char[]". Tohle opravdu nefungovalo?



class Rodic
{ const char * mStr;
public:
Rodic(const char* str)
: mStr(str)
{}
virtual ~Rodic()
{}
};


class Potomek: public Rodic
{ typedef Rodic Base;
public:
Potomek(const char * str)
: Base(str)
{}

~Potomek()
{}
};

Nahlásit jako SPAM
IP: 85.207.192.–
Sony0
Návštěvník
17. 11. 2007   #4
-
0
-

To Jura : no možná to nemam uplně přesně takle ale v podstatě princip je stejnej...je v tom nějakej rozdíl když tam nemam ukazatel ale normální char proměnnou?

Nahlásit jako SPAM
IP: 62.177.83.–
Sony0
Návštěvník
17. 11. 2007   #5
-
0
-

To Jura : a ještě tam k té mojí nesrozumitelné formulaci...
myslel sem že když pak tvořim ten objekt a napíšu

třídaPotomka potomek("franta");

tak vlastně to přebírá char[6]

Nahlásit jako SPAM
IP: 62.177.83.–
Jura
~ Anonymní uživatel
637 příspěvků
17. 11. 2007   #6
-
0
-

To Sony :
Pokud potomek disponuje pouze konstruktorem, který přebírá char, tak je jasné, že se tomu nedá předat char*. Takže pokud chceš objekt incializovat řetězcem, tak formální argument konstruktoru musí mít odpovídajicí typ, tedy char*, prípadne char prom[]. Ale pokud to není odpověď na tvoji otázku, tak raději pošli apoň část kódu.

Nahlásit jako SPAM
IP: 85.207.192.–
Sony0
Návštěvník
17. 11. 2007   #7
-
0
-

To Jura :



class button
{
public:
button(char);
virtual void action();
private:
char name[15];
};

class exit_button: public button
{
public:
exit_button(char[]);
void action();
};

button::button(char text[])
{
sprintf(name, "%s",text );
}
exit_button::exit_button(char text[]):
button(text[]) //no a tady nevim jak to udělat
{
}
...
int main()
{
exit_button exit("EXIT");
return 0;
}

Nahlásit jako SPAM
IP: 62.177.83.–
Jura
~ Anonymní uživatel
637 příspěvků
17. 11. 2007   #8
-
0
-



class button
{
public:
button(char []);
virtual ~button() {} // tohle je dulezite(v pripade pouziti Button *prom) - kompilator negeneruje virtualni destruktor!!!
virtual void action();
private:
char name[15];
};

class exit_button: public button
{
public:
exit_button(char[]);
void action();
};

button::button(char text[])
{ strcpy(name, text); // lepe strncpy
}
exit_button::exit_button(char text[]):
button(text) //bez tech zavorek
{
}
...
int main()
{
exit_button exit("EXIT");
return 0;
}

Nahlásit jako SPAM
IP: 85.207.192.–
Sony0
Návštěvník
17. 11. 2007   #9
-
0
-

To Jura : jo dik moc.... to bylo ono

Nahlásit jako SPAM
IP: 62.177.83.–
Sony0
Návštěvník
17. 11. 2007   #10
-
0
-

akorát mi to ještě píše:

error C2146:syntax error : missing ';' before identifier 'exit
warning C4551: function call missing argument list'

Nahlásit jako SPAM
IP: 62.177.83.–
Sony0
Návštěvník
17. 11. 2007   #11
-
0
-

ty errory se vztahujou ke stejnýmu řádku a sice k řádku na kterym mám to 'exit_button exit("EXIT");'

Nahlásit jako SPAM
IP: 62.177.83.–
Sony0
Návštěvník
17. 11. 2007   #12
-
0
-

jo...tak už je to v cajku...nějaká knihovna už měla zabranej název tý třídy co sem používal jako ten button...

ještě jednou dik juro

Nahlásit jako SPAM
IP: 62.177.83.–
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, 50 hostů

Podobná vlákna

Předávání figury — založil Martin

Kontrola argumentu — založil vazbok

Predavani mapy ve funkci — založil xJakubS

Pole v argumentu funkce — založil oxidián

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ý