Creer des listes d'ojets et se les passer entres fonctions - C++ - Programmation
Marsh Posté le 05-06-2010 à 12:08:12
Ton camarade de promo a apparement deja posé la question là:
http://www.developpez.net/forums/d [...] ets-scope/
et faire de l'objet avec seulement des malloc , c'ets allez au devant de grave déssilusion.
Utilis ele new de placement sur de l'espace mémoire préalloué et passe des références si tu veux partager les instances entre méthdoe ou fonctions
Marsh Posté le 05-06-2010 à 14:22:46
C'est gentils de me rajeunir mais ils ne s'agit pas d'exo. J'ai réécris format exercice pour que ça puisse être clair et réutilisable ... Je pense que tu t'en tamponne de la lecture analogique ou de la détection d'impulsion.
Sinon mon multi et moi tentons d'autre forum, on ne peut rien te cacher ...
Comme je disais le compilateur ne supporte pas le mot clé new, et dans la communauté le palliatif semble être de le remplacer par un malloc.
Je pensais que c'était équivalent.
Bon, au final je sens que je vais devoir préalouer des tableaux, faire sauter le polymorphisme et me contenter du minimum de type d'objet différents.
Mais rassurer moi, en C avec des "new" c'est possible de passer des objets d'une méthode dans un attribue ?
Marsh Posté le 05-06-2010 à 17:25:37
y a pas de methode en "C" surtout.
Si tes classes sont justes des sacs à variables et n'ont pas de constructeur compliqué, malloc suffit. Ensuite trimballe tes pointeurs ou tes références.
new n'existe pas ou est couteux ? car le new de placement comme je l'ai indiqué dans l'autre topic peut t'aider je pense.
Marsh Posté le 05-06-2010 à 19:36:27
Ah ok je n'avais pas fait le lien.
Le new créer une erreur à la compilation. Tout comme j'avais essayé de copier coller bêtement ton code pour voir et les std:: ne passaient pas. Je pense pas que les pointeurs intelligent, si c'est bien ça, ne sont pas gérés.
Je vais essayer de simplifier mon code et rester dans les bornes de l'environnement de dev dédié à l'arduino.
Marsh Posté le 05-06-2010 à 20:06:17
c'est pas des pointeurs intelligent, juste des pointeurs :€
quelle erreur te donne le new ?
C++ sans new, c'ets du C
Marsh Posté le 05-06-2010 à 20:54:33
Bein disons que je le sais surtout par le forum arduino. Maintenant quand j'écris
Chat * c = new Chat(5);
ça me marque
o: In function `setup':
undefined reference to `operator new(unsigned int)'
Marsh Posté le 05-06-2010 à 21:57:54
tu veux faire quoi ? Allouer 5 Chats ?
montre ta ligne de compilo
Marsh Posté le 05-06-2010 à 23:12:12
Le 5 ne sert à rien, juste à être mis dans la propriété _num
L'IDE arduino me sort juste ce que j'ai marqué.
Marsh Posté le 06-06-2010 à 08:44:47
ok donc c'est bien le constructeur de Chat que tu appelles.
Peut tu essayer ça à la place de new:
Code :
|
Marsh Posté le 09-06-2010 à 10:39:57
bravo le compilo.
si new marche pas, le new placement qui est dans le header <new> ne marchera encore moins IMHO.
Marsh Posté le 09-06-2010 à 13:31:38
pas forcement. D'experience en embarqué, l'un peut marcher sans l'autre
Marsh Posté le 09-06-2010 à 14:33:36
J'ai essayé ça me réponds
error: expected constructor, destructor, or type conversion before '*' token In function 'T* my_new(int)':
At global scope:
Bad error line: -2
Bon de toute manière je me suis limité à 2 types d'objets différents. J'initialise les 2 tableaux en global pour les contenir, ça a l'air de passer côté mémoire.
Marsh Posté le 05-06-2010 à 01:01:18
Salut,
Je m'essaye au C++ avec un microcontrolleur, sur une carte arduino. Je voudrais créer une liste d'objet dans un fonction puis me resservir de cette liste dans une autre méthode. J'ai vu sur d'autre forum que mon code ne pouvait pas marcher parce que l'objet n'était valide que dans le scope où il est crée. Mais comment peut on faire pour le faire sortir ?
Le "new" n'est pas disponible dans ce langage. J'essaye avec ou sans malloc() ça change rien. Ce code n'est pas important, c'est un exemple mais en fait je voudrais communiquer à la carte au démarrage des objets qui peuvent être en nombre important et que je ne peux pas mettre en dur dans le code.
Message édité par Ricco le 05-06-2010 à 01:01:46
---------------
"L'informatique n'est pas plus la science des ordinateurs que l'astronomie n'est celle des télescopes." Michael R. Fellows & Ian Parberry