gros debutant en c++ (quelque notions) Recuper variable d'une classe ? - C++ - Programmation
Marsh Posté le 30-10-2003 à 00:15:50
une variable membre n'existe qu'a l'intérieur de sa classe.
tu ne peux pas utiliser une variable membre comme ça toute seule.
il faut créer une instance de ta classe :
Code :
|
ensuite tu peux accéder à la variable membre de l'instance de ta classe :
Code :
|
je te conseille fortement de lire qques documentations sur le C++ et la programmation orientée objet avant de continuer plus loin.
Je te conseille "Thinking in C++" qui a l'avantage de comporter un chapitre qui présente les notions importantes telles que l'encapsulation par exemple.
trouvable ici : http://www.codecuts.com/mainpage.asp?WebPageID=315
Marsh Posté le 30-10-2003 à 00:29:32
Y a aussi le célèbre "Cours de C/C++" :
http://casteyde.christian.free.fr/ [...] book1.html
Voilà, bonne lecture...
Marsh Posté le 30-10-2003 à 09:14:52
Je crois qu'une révision s'impose effectivement... Si non c un membre de classe qu'il te faut:
Code :
|
Marsh Posté le 30-10-2003 à 12:28:53
ok merci a vous 3 je regarde ca de suite avant de continuer. Je crois que c'est preferable.
Marsh Posté le 30-10-2003 à 14:45:39
Bon alors j'ai suivi vos conseil et j'ai mis le nez dans des cours mais un truc derange borland, j'ai regarder de plus pres le probleme mais je trouve pas .
Alors voila ce que cela donne avec vos conseils et les cours:
J'ai une classe ans le fichier "SimplePartie.h"
Code :
|
la variable nombreCouleur est traité dans le fichier SimplePartie.cpp
voici mon main.cpp là ou je dois recuperer la valeur de la variable membre nombreCouleur.
Code :
|
Voici les 2 erreurs que ca me donne sur "TForm5 maForm;"
[C++ Erreur] main.cpp(15): E2459 Les classes de style VCL doivent être construites en utilisant l'opérateur new
[C++ Erreur] main.cpp(15): E2285 Impossible de trouver une correspondance pour 'TForm5::TForm5()'
J'ai regarder comment marchais l'operateur "new" mais je n'y arrive pas. Please help...
Marsh Posté le 30-10-2003 à 15:19:10
J'ai un avancement.
je ne doit pas ecrire : TForm5 maForm;
mais TForm5 *maForm = new TForm5();
Mais borland me dit qu'il y a toujours cet ereur la :
[C++ Erreur] main.cpp(17): E2285 Impossible de trouver une correspondance pour 'TForm5::TForm5()'
Marsh Posté le 30-10-2003 à 16:30:14
Je n'y arrive pas , une petite aide svp.
Je recapitule:
Voici ma classe TForm5 qui est declarée dans "SimplePartie.h"
Code :
|
la variable nombreCouleur est traité dans le fichier SimplePartie.cpp
voici mon main.cpp là ou je dois recuperer la valeur de la variable membre nombreCouleur.
Code :
|
Et voici mon main.h ou est declaré mon constructeur et ma classe TForm1 :
Code :
|
Ou sont mes boulettes je suis aveugle....
Marsh Posté le 30-10-2003 à 16:33:24
pour le moment, tu as declare TForm5 dans ton .h, mais tu ne l'as pas encore implemente....
Marsh Posté le 30-10-2003 à 16:41:45
je comprend pas ce que tu veux dire.
Tien voila mon SimplePartie.cpp
TForm5 *Form5;//créé automatiquement
__fastcall TForm5::TForm5(TComponent* Owner): TForm(Owner)//créé automatiquement
{
nombreCouleur=10;//par exemple
}
Donc je veux recuperer la valeur du membre nombreCouleur dans mon main.cpp.
Marsh Posté le 30-10-2003 à 16:42:28
je comprend pas ce que tu veux dire.
Tien voila mon SimplePartie.cpp
Code :
|
Donc je veux recuperer la valeur du membre nombreCouleur dans mon main.cpp.
Marsh Posté le 30-10-2003 à 16:46:46
Bon heu c pas que je veux être méchant mais va t'acheter un bouquin sur le C++
Marsh Posté le 30-10-2003 à 16:48:22
deja, y a un truc que je comprends pas, nombreCouleur n'est pas static et tu fais un accesseur statique, ca peut pas aller, il doit pas compiler ton SimplePartie.cpp, je me trompe ?
si je ne me trompe pas, vire le static
Code :
|
Marsh Posté le 30-10-2003 à 16:52:36
oui en fait je l'avais changer mon simplepartie.cpp
voila le vrai:
Code :
|
et voici mon simplepartie.h
Code :
|
Marsh Posté le 30-10-2003 à 16:58:57
y a toujours le "static"
Marsh Posté le 30-10-2003 à 17:02:22
tu devrais un peu potasser la programmation objet avant d'en faire, ca peut etre utile
Marsh Posté le 30-10-2003 à 17:04:10
bon alors en resumé borland me fait des erreurs sur mon constructeur , comprend pas ...
Code :
|
[C++ Erreur] main.cpp(18): E2251 Impossible de trouver un constructeur par défaut pour initialiser la classe de base 'TForm'
[C++ Erreur] main.cpp(19): E2285 Impossible de trouver une correspondance pour 'TForm5::TForm5()'
[C++ Erreur] main.cpp(39): E2451 Symbole 'maForm' non défini
Marsh Posté le 30-10-2003 à 17:11:50
roromaino a écrit : bon alors en resumé borland me fait des erreurs sur mon constructeur , comprend pas ...
|
desole....j'abandonne....
Marsh Posté le 30-10-2003 à 17:15:14
mais serieux, prends un bouquin de programmation objet, et essaie de voir ce que c'est, la, tout ce que tu as ecrit, ca n'a aucun sens.....
desole d'etre dur, mais la programmation ca vient pas par magie
Marsh Posté le 30-10-2003 à 17:18:03
ok , je vais lire le cour de casteyde il m'a l'air pas mal
Marsh Posté le 30-10-2003 à 17:18:50
tu vire tout ce qui a été dit depuis le début (comme code, pas les conseils de bouquin évidemment ) et tu fais :
Form5->nombreCouleur
Normalement les forms sont créées automatiquement au démarrage du soft (c'est le comportement par défaut), ça se fait dans le fichier projet.cpp, où projet est le nom de ton projet
Marsh Posté le 30-10-2003 à 17:24:58
donc faut faire comme ca ?
Code :
|
Marsh Posté le 30-10-2003 à 17:28:59
Il serait quand même bon que tu :
- comprennes comment marchent les classes en C++
- analyses quelles classes/objets C++Builder crée pour toi. Par ex Form5 tu peux y accéder parce que quelque part une instance de TForm5 a été créée et placée dans Form5 (qui est un pointeur, d'où le "->" ).
Marsh Posté le 01-11-2003 à 05:18:00
N'oublie pas d'initialiser tes pointeurs, sinon source de problème en vue !!!
TForm1 *Form1 = NULL; //créé automatiquement
Edit: et regarde dans ton livre le chapitre intitulé : L'héritage du temps :
http://casteyde.christian.free.fr/ [...] x2821.html
Marsh Posté le 01-11-2003 à 10:41:05
iS@mi a écrit : N'oublie pas d'initialiser tes pointeurs, sinon source de problème en vue !!! |
bah ici les Forms sont créés automatiquement au démarrage du soft, s'il ne touche à rien
Marsh Posté le 01-11-2003 à 17:56:48
antp a écrit : |
Dans son fichier .cpp dans le haut, il déclare le pointeur TForm1 *Form1; qui n'est visiblement pas initialisé
Marsh Posté le 01-11-2003 à 18:02:04
iS@mi a écrit : |
Form1 est déclaré en extern dans le .h
Marsh Posté le 01-11-2003 à 18:51:31
iS@mi a écrit : |
Il a rien déclaré, c'est C++Builder qui l'a fait
Comme je l'ai dit les forms sont initialisées dans le fichier .cpp du nom du projet, qui contient en fait le WinMain du programme...
Marsh Posté le 29-10-2003 à 23:47:27
Et oui , comment recuperer la valeur d'une variable declaré en public dans une classe dans un autre fichier.cpp. Je m'explique:
J'ai une classe ans le fichier "SimplePartie.h"
la variable nombreCouleur est traité dans le fichier SimplePartie.cpp
Je veux donc utiliser la valeur de cette variable dans le fichier main.cpp
j'ai bien inclu "SimplePartie.h" dans mon main.cpp
mais borland il est pas content.
Comment utiliser cette variable ?
exemple :
je veux faire dans mon main.cpp
mais borland avec ca il tire la gueule...
c pitete parce que je suis debutant