Passage Java/C++ petite question :)

Passage Java/C++ petite question :) - C++ - Programmation

Marsh Posté le 03-06-2007 à 03:13:33    

Bonjour,

 


Alors voilà j'ai l'habitude de programmer en java et je me suis mis au c++ depuis quelques temps, tout se passait bien jusqu'à aujourd'hui.

 

Voilà en java quand je déclare une variable de type Object  je fais ceci : Object o;

 

Alors en C++, je pensais qu'il suffisait de faire Object* o seulement j'ai le droit a une erreur

 

"...Type name expected
 ...Declaration missing"

 

Et j'avoue que je ne comprends pas ^^

 

Donc si quelqu'un pouvait m'éclairer ca serait sympa :)

 

Pour info j'utilise le compilo Borland C++ 5.5 ;)


Message édité par the_phoenix2 le 03-06-2007 à 03:15:10
Reply

Marsh Posté le 03-06-2007 à 03:13:33   

Reply

Marsh Posté le 03-06-2007 à 09:10:03    

Bah Object c'est pas une classe de base du C++ ... [:dawa]

 

En outre, en C++ tu dois gérer ta mémoire toi même - pas de GC-
donc si tu declares un Object* o, il va falloir l'instancier via new :

 
Code :
  1. Object* o = new Object;
 

Mais, en général, une déclaration simple suffit :

 
Code :
  1. Object o;
 

Je te conseil de te renseigner sur la notion de pointeur et la gestion de la mémoire en C++, la difference en allocation dynamique et statique ainsi que le modèle objet sous-jacent de C++ qui est radicalement différent de celui de java (comprendre, y en a pas).

 

Ah et utilises un vrai compilo genre gcc (mingw si tu es sous windows) et pas cette bouse de Borland.

Message cité 1 fois
Message édité par Joel F le 03-06-2007 à 09:11:12
Reply

Marsh Posté le 03-06-2007 à 12:06:37    

Joel F a écrit :

Bah Object c'est pas une classe de base du C++ ... [:dawa]

 

En outre, en C++ tu dois gérer ta mémoire toi même - pas de GC-
donc si tu declares un Object* o, il va falloir l'instancier via new :

 
Code :
  1. Object* o = new Object;
 

Mais, en général, une déclaration simple suffit :

 
Code :
  1. Object o;
 

Je te conseil de te renseigner sur la notion de pointeur et la gestion de la mémoire en C++, la difference en allocation dynamique et statique ainsi que le modèle objet sous-jacent de C++ qui est radicalement différent de celui de java (comprendre, y en a pas).

 

Ah et utilises un vrai compilo genre gcc (mingw si tu es sous windows) et pas cette bouse de Borland.

 

Pour l'instanciation j'ai pas vraiment besoin puisqu'en fait l'object est un attribut de ma classe qui sera initialisé via le constructeur qui prend un objet en parametre.

 

Bah en fait les pointeurs et la gestion de mémoire en C++ je connais mais là même si je fais

Code :
  1. Object o;

il me sort cette erreur.

 

Pour le compilo, hum j'ai pas le choix ^^ et c'est vrai qu'il est merdique mais bon je suis en stage et j'arrive sur un projet déjà existant qui a toujours été compilé avec Borland... :(

 

Donc en gros ceci devrait marcher :

Code :
  1. class A
  2. {
  3.      private :
  4.         Object obj;
  5.      public :
  6.         A(Object o);
  7. };
  8. A::A(Object o){
  9.     obj = o;
  10. }
 

Et pourtant chez moi ca pose problème :(

 

Et là c'est quand j'utilise les pointeurs ^^ :
http://img522.imageshack.us/img522/7888/testobjpk4.th.jpg

Message cité 2 fois
Message édité par the_phoenix2 le 03-06-2007 à 12:28:36
Reply

Marsh Posté le 03-06-2007 à 12:31:32    

the_phoenix2 a écrit :


Donc en gros ceci devrait marcher :


non, la classe Object n'existe pas.


---------------
my flick r - Just Tab it !
Reply

Marsh Posté le 03-06-2007 à 12:58:24    

the_phoenix2 a écrit :

Pour l'instanciation j'ai pas vraiment besoin puisqu'en fait l'object est un attribut de ma classe qui sera initialisé via le constructeur qui prend un objet en parametre.

 

On vient de te dire que Object n'existe pas en C++ :o

 

zut : grillaid


Message édité par Joel F le 03-06-2007 à 12:58:34
Reply

Marsh Posté le 03-06-2007 à 13:29:13    

erff oki, j'avais rien compris encore, dslé ^^

 

Mais alors comment puis je faire parce que j'utilisais un object pour être generique et pouvoir y mettre n'importe quoi et là je vois pas trop comment faire ^^


Message édité par the_phoenix2 le 03-06-2007 à 13:31:12
Reply

Marsh Posté le 03-06-2007 à 13:31:36    

naïvement, je dirais  

Code :
  1. void *obj


mais bon, c'est le genre de truc qu'on fait en C, il y a sûrrement quelque chose de mieux en C++  


---------------
my flick r - Just Tab it !
Reply

Marsh Posté le 03-06-2007 à 13:33:37    

fais une classe générique ou utilise boost::variant ou utilise un schema polymorphe à base d'héritage de classe selon tes besoins.
 
Et je réitére mon commentaire N°1 : apprends à faire du C++ et oublie JAVA

Reply

Marsh Posté le 03-06-2007 à 13:40:13    

ouki merci :)
 
Bah j'essai doucement de passer au C++, mais le passage Java -> C++ est pas forcément evident sachant que Java nous prends pas mal par la main ^^
 
Je regrette parfois de ne pas avoir commencer par le C++, ca aurait été sans doute plus logique mais j'ai pas vraiment eu le choix :p

Reply

Marsh Posté le 03-06-2007 à 14:33:03    

the_phoenix2 a écrit :

ouki merci :)
 
Bah j'essai doucement de passer au C++, mais le passage Java -> C++ est pas forcément evident sachant que Java nous prends pas mal par la main ^^
 
Je regrette parfois de ne pas avoir commencer par le C++, ca aurait été sans doute plus logique mais j'ai pas vraiment eu le choix :p


 
Je ne connais pas ton projet, mais de toutes façons il est improbable qu'utiliser un Object serait une bonne idée même si tu étais en Java.
 
Edit : J'ai jeté un coup d'oeil à ta capture d'écran : tu fais juste un test vite fait "hors projet", je retire ma remarque.

Message cité 1 fois
Message édité par boulgakov le 03-06-2007 à 14:44:16
Reply

Marsh Posté le 03-06-2007 à 14:33:03   

Reply

Marsh Posté le 03-06-2007 à 18:42:56    

boulgakov a écrit :

Je ne connais pas ton projet, mais de toutes façons il est improbable qu'utiliser un Object serait une bonne idée même si tu étais en Java.
 
Edit : J'ai jeté un coup d'oeil à ta capture d'écran : tu fais juste un test vite fait "hors projet", je retire ma remarque.


 
 
Oui sur la capture c'est un juste un test.
 
Sinon dans mon projet, j'utilise les graphes et la classe object m'était utile dans le sens ou à chaque sommet j'attributs un object pour pouvoir y stocker ce que je veux et être le plus général et évolutif possible, stout :p
 
 

Reply

Marsh Posté le 03-06-2007 à 20:06:37    

une interface commune devrait marcher normalement. Enfin c'est le but de la POO il me semble

Reply

Marsh Posté le 04-06-2007 à 16:01:39    

the_phoenix2 a écrit :

Sinon dans mon projet, j'utilise les graphes et la classe object m'était utile dans le sens ou à chaque sommet j'attributs un object pour pouvoir y stocker ce que je veux et être le plus général et évolutif possible, stout :p


 
C'est mal !
 
(Mais bon si ça marche  :D )

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed