OVH Cloud OVH Cloud

Un problème...

40 réponses
Avatar
Zouplaz
Bonjour, je cherche à faire quelque chose mais j'ai du mal, je
m'explique.

Je voudrais qu'une classe de base baseObject implémente une méthode
statique createObject, méthode appellée en lieu et place de new lorsque
j'ai besoin de créer un objet.

Le problème c'est que je veux aussi créer des instances de classes
dérivées de baseObject. Et là ça coince, voici un extrait de mes
bidouilles :

----- BaseObject.h
public:
static BaseObject *createObject();

----- BaseObject.cpp
BaseObject *BaseObject::createObject()
{
BaseObject * newObj = new BaseObject();
newObj->ID = ++nextID;
return newObj;
}

----- WorldObject.h
class WorldObject : public BaseObject

----- Main.cpp
WorldObject* wo = (WorldObject *)BaseObject::createObject();

Le problème c'est que je suis obligé de faire un cast (forcément).
Non seulement c'est pas bien mais en plus la déclaration de fonctions
purement virtuellement dans WorldObject ne provoque pas d'erreur à la
compilation sur la ligne ci-dessus, donc c'est pire que pas bien.

L'idée d'avoir une sorte de mini-factory c'est de garder une trace des
objets qui ont été crées (en fait peut importe même, j'essaie de
comprendre).

Je pense que si j'utilisais un template je me sortirais de là, et
baseObject pourrait retourner le bon type.

Mais sans template ? Est-ce qu'il existe une solution ?

Merci de votre aide.

10 réponses

1 2 3 4
Avatar
Loïc Joly
_M.B._ wrote:

"Loïc Joly" a écrit dans le message news:
bnmtn7$ov9$

Bin, y plein d'autres noms, qui ne m'ont pas tous l'air slaves :
...... Dos Reis .....




C'est qui ?


http://www.cmla.ens-cachan.fr/Utilisateurs/dosreis/

--
Loïc


Avatar
Luc Hermitte
"Philippe Guglielmetti" wrote in
news:3f9f51a5$0$3674$:

Philippe Kahn, un Français, a démocratisé les langages sur PC en
faisant le compilateur Turbo-Pascal (1/10ème du prix des compilos
Microsoft et 10x plus rapide à l'époque). Maintenant sa boite
s'appelle Borland, et le produit Delphi.


La boite a été rachetée deux ou trois fois depuis et je ne crois pas que
PK en fasse encore parti.
En produit compilateur, ils ont également les BC++B.


--
Luc Hermitte <hermitte at free.fr>
FAQ de <news:fr.comp.lang.c++> :
<http://www.cmla.ens-cachan.fr/Utilisateurs/dosreis/C++/FAQ/>
Dejanews : <http://groups.google.com/advanced_group_search>

Avatar
_M.B._
"Loïc Joly" a écrit dans le message news:
bnp5ck$r2a$
_M.B._ wrote:

"Loïc Joly" a écrit dans le message news:
bnmtn7$ov9$

Bin, y plein d'autres noms, qui ne m'ont pas tous l'air slaves :
...... Dos Reis .....




C'est qui ?


http://www.cmla.ens-cachan.fr/Utilisateurs/dosreis/

--
Loïc



C'est bien ce que je craignais ...

MB



Avatar
_M.B._
"Philippe Guglielmetti" a écrit dans le message news:
3f9f7d95$0$3663$
"Philippe Guglielmetti" a écrit:
Et si vous regardez C#, vous verrez que comme les ricains ne
comprennent



pas les
subtilités, ils les interdisent....
Pourrais-tu preciser un peu ?

un peu alors. Le # de C# est censé ajouter deux + à C++, mais en fait il

enlève pas mals de trucs comme l'héritage multiple, la surcharge
d'opérateurs etc.
voir par exemple

http://developpeur.journaldunet.com/tutoriel/csharp/021030csharp_diffcpp.sht

ml
Je reconnais qu'il apporte cependant certaines simplifications agréables.
--
Philippe Guglielmetti - www.dynabits.com




Pas la surcharge d'operateur.
OK pour le reste.

Mais est-ce vraiment parce que "les ricains ne comprennent pas qu'ils
interdisent" ??

Un peu rapide, peut etre.

MB



Avatar
Christophe Lephay
_M.B._ wrote:
"Loïc Joly" a écrit dans le message
news: bnp5ck$r2a$
_M.B._ wrote:
"Loïc Joly" a écrit dans le message
news: bnmtn7$ov9$
Bin, y plein d'autres noms, qui ne m'ont pas tous l'air slaves :
...... Dos Reis .....
C'est qui ?

http://www.cmla.ens-cachan.fr/Utilisateurs/dosreis/

C'est bien ce que je craignais ...



Ya pire...

Chris




Avatar
rlods
Les macros ca peut servir a ne pas avoir a reecrire 15fois ton code.

Ce moyen est une des solutions possibles a ton probleme.
Une autre solution (qui a deja ete poste dans ce thread) etant de
faire la factory avec nom explicit.


Zouplaz wrote in message news:...
theromulus - :

Une solution serait de creer ta methode statique factory dans toute
les classes derivees egalement (uniquement celles qui doivent pouvoir
etre instanciee).


Ha quand même je suis sceptique, tu te rends compte si j'ai 15 classes ?
Dupliquer 15 fois le même code juste pour une question de cast ? Ca me
semble pas trop logique...



Avatar
Møgluglu
Philippe Guglielmetti a écrit:
Philippe Kahn, un Français, a démocratisé
les langages sur PC en faisant le compilateur Turbo-Pascal (1/10ème
du prix des compilos Microsoft et 10x plus rapide à l'époque).
Maintenant sa boite s'appelle Borland, et le produit Delphi.


??
J'ai plutôt lu qu'il avait racheté le compilateur Blue Label Pascal
d'Anders Hejlsberg. Des références?

Les ricains avaient pondu un horrible macro-assembleur
appellé C, Stroustrup en a fait un langage en y ajoutant les "++" de
la rigueur européenne. Et si vous regardez C#, vous verrez que comme
les ricains ne comprennent pas les subtilités, ils les interdisent....


Car le même Hejlsberg (qui a créé le C#) est purement américain, comme
son nom l'indique?...

--
Møgluglu

Avatar
kanze
Loïc Joly wrote in message
news:<bnmtn7$ov9$...
Zouplaz wrote:

Philippe Guglielmetti - :

Si tu veux planer avec des factories g?n?r?es automatiquement par
des templates, lis "Modern C++ Design" d'Alexandrescu.
Et puis relis-le.
Et puis lis le encore une fois.
Si t'as pig? apr?s trois lectures, t'es un gourou C++


Heu... J'ai déjà assez de mal avec l'aide en ligne (section C++,
hein pour pas être HS) de visual studio, alors le bouquin là... Même
pas en rêve !

PS : Pourquoi tant de noms slaves dans le monde du C++ (cf le
newsgroup anglophone (pas mal de noms de cette origine),

strouztruc
Bjarne Stroustrup, né au Danemark, vivant aux USA.



Donc, pas slav.

, alexandrescu,
Andrei Alexandrescu, né en Roumanie (?), vivant aux USA.



Donc, pas slav.

etc.))... Le C++ c'est un peu comme les échecs ?? Hein ?


Bin, y plein d'autres noms, qui ne m'ont pas tous l'air slaves :
Koenig, Vandervorde, Coplien, Dos Reis, Stepanov, Sutter, Plauger,
Kanze, Spicer, et plein d'autres... (1)


Surtout, je crois que la forme du nom renseigne assez peu. Stepanov est
bien d'origine russe (et le nom, et la personne), mais pour les
autres... (Dans la liste, il y a bien une personne dont la langue
maternelle est le français. Mais ce n'est pas son nom qui le revèle.)

La seule « orientation » nationale que j'ai pu constaté, c'est une
inclination vers la bibliothèque de la part des allemands : Josuttis,
Kühl, Kreft et Langer. Et Sutter, mais pas Schwarz, malgré le nom.

--
James Kanze GABI Software mailto:
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16



Avatar
kanze
Luc Hermitte wrote in message
news:...
"Philippe Guglielmetti" wrote in
news:3f9f51a5$0$3674$:

Philippe Kahn, un Français, a démocratisé les langages sur PC en
faisant le compilateur Turbo-Pascal (1/10ème du prix des compilos
Microsoft et 10x plus rapide à l'époque). Maintenant sa boite
s'appelle Borland, et le produit Delphi.


La boite a été rachetée deux ou trois fois depuis et je ne crois pas
que PK en fasse encore parti.


En plus, ce n'est pas lui qui a écrit Turbo-Pascal -- il l'a acheté
d'une boîte danoise.

En ce qui concerne l'Europe et les langages : C++ (d'un danois) dérive
de C (des américains) dérive de B (des américains) dérive de BCPL (de
l'Université de Cambridge, en Angleterre, je crois). La deuxième
influence importante, c'est bien Simula, des scandinaves aussi.

Et comme on a dit, Pascal, c'est d'un suisse, et Ada et Prolog des
français.

--
James Kanze GABI Software mailto:
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16


Avatar
Richard Delorme

Luc Hermitte wrote in message
news:...
"Philippe Guglielmetti" wrote in
news:3f9f51a5$0$3674$:

Philippe Kahn, un Français, a démocratisé les langages sur PC en
faisant le compilateur Turbo-Pascal (1/10ème du prix des compilos
Microsoft et 10x plus rapide à l'époque). Maintenant sa boite
s'appelle Borland, et le produit Delphi.


La boite a été rachetée deux ou trois fois depuis et je ne crois pas
que PK en fasse encore parti.


En plus, ce n'est pas lui qui a écrit Turbo-Pascal -- il l'a acheté
d'une boîte danoise.


C'est en effet le danois Anders Hejlsberg qui a écrit Turbo-Pascal. Il a
aussi dirigé la conception de Delphi (pour Borland), J++ et C# (pour
Microsoft).

--
Richard



1 2 3 4