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[]
Fórum › C / C++
Předávání argumentů dceřiné třídě
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()
{}
};
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.
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;
}
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;
}
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Předávání argumentů za běhu programu — založil x-time
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