class toto
{
public:
toto();
int b;
void tata();
};
toto::toto()
{
b = 4;
}
void toto::tata()
{
}
class titi: toto
{
public:
void go();
};
void titi::go()
{
cout << "ok" << b << endl;
}
int main(int argc, char *argv[])
{
toto* toto1 = new toto();
titi *titi1 = (titi*) toto1;
titi1->go();
return 0;
}
PS: Je n'ai pas envie de rajouter une fonction virtuelle go() à toto
(en fait, je ne le peux pas, toto étant une librairie à laquelle je n'ai
pas accès).
Faudrait savoir, tu disais qu'il ne marchait pas toujours. Là, tu essayes d'utiliser un objet Base comme si c'était un autre objet. Le comportement d'un tel truc est sans doute indéfini. Ca "marche" parfois et d'autre fois non, selon le sens du vent, du compilateur et du système.
En fait ca marche toujours dans le code que j'ai posté. Ca plante toujours dans un autre code plus complexe (et encore, je ne suis pas sûr que le plantage vienne de là).
le code que tu as posté est tout simplement faux. Si ça marche (ie ne plante pas), c'est que tu es chanceux ! En effet, tu essaie d'appeler une fonction go() dans une classe qui n'en possède pas !!!!
Faudrait savoir, tu disais qu'il ne marchait pas toujours.
Là, tu essayes d'utiliser un objet Base comme si c'était un autre objet.
Le comportement d'un tel truc est sans doute indéfini. Ca "marche"
parfois et d'autre fois non, selon le sens du vent, du compilateur et du
système.
En fait ca marche toujours dans le code que j'ai posté. Ca plante toujours
dans un autre code plus complexe (et encore, je ne suis pas sûr que le
plantage vienne de là).
le code que tu as posté est tout simplement faux. Si ça marche (ie ne plante
pas), c'est que tu es chanceux !
En effet, tu essaie d'appeler une fonction go() dans une classe qui n'en
possède pas !!!!
Faudrait savoir, tu disais qu'il ne marchait pas toujours. Là, tu essayes d'utiliser un objet Base comme si c'était un autre objet. Le comportement d'un tel truc est sans doute indéfini. Ca "marche" parfois et d'autre fois non, selon le sens du vent, du compilateur et du système.
En fait ca marche toujours dans le code que j'ai posté. Ca plante toujours dans un autre code plus complexe (et encore, je ne suis pas sûr que le plantage vienne de là).
le code que tu as posté est tout simplement faux. Si ça marche (ie ne plante pas), c'est que tu es chanceux ! En effet, tu essaie d'appeler une fonction go() dans une classe qui n'en possède pas !!!!