panthere007
Messages postés20Date d'inscriptionvendredi 18 avril 2008StatutMembreDernière intervention 7 août 2009
-
7 août 2009 à 01:44
cs_juju12
Messages postés966Date d'inscriptionsamedi 3 avril 2004StatutMembreDernière intervention 4 mars 2010
-
8 août 2009 à 01:25
Salut,
Bon je vais essayer d'être clair mai avec l'héritage c'est pas facile
précision ce code est programmer sous geany et compiler avec g++
excuser les commentaires en français mai je débute et il faut pouvoir ce relire (déjà que mon français...)
Je cherche a en-capsuler du code système fait en C dans une class.
ce code Ser a crée un trhead
le problème est le suivant. :
j'ai donc ma première classe
qui a le cheminement suivant
classe mere -->[public m_thread_create ]-->[private static m_thread_call] --->[protect virtual m_call_out_procedure] Bon donc jusque la c'est pas compliqué (hum....)
Le problème est que le code a exécuté ce situera dans un autre fichier *. cpp il faut donc que depuis ce fichier je puisse ajouter le code a exécuté
c'est pourquoi j'ai fait cela ici avec la class B (qui donc devrai ce retrouver dans un autre fichier. cpp)
mai a la compilation j'obtiens
[b]n file included from my_class_ptrhead.cpp:1,
from main.cpp:5:
my_class_ptrhead.h:28: erreur: two or more data types in declaration of ‘m_call_thread’
/b
bon je sais pas ou son passée les balise code sur ce forum je donne un lien plus approprier.
Tapez le texte de l'url ici.
cs_juju12
Messages postés966Date d'inscriptionsamedi 3 avril 2004StatutMembreDernière intervention 4 mars 20104 7 août 2009 à 13:27
C'est pas vraiment curieux, puisque tu ne crées aucune instance de classe B, pourquoi donc une méthode de B serait-elle appelée?
Bon, y a l'air d'y avoir pas mal de défauts dans ton code, tu débutes?
D'abord, on n'inclut JAMAIS de fichiers .cpp. Les déclarations des fonctions et classes sont placées dans des headers (.h), et le code implémenté dans les .cpp. Tu peux très bien utiliser dans un .cpp une fonction implémentée dans un autre fichier, du moment que tu la déclares partout où tu l'utilises. D'où l'intérêt des headers.
Par exemple :
panthere007
Messages postés20Date d'inscriptionvendredi 18 avril 2008StatutMembreDernière intervention 7 août 2009 7 août 2009 à 22:54
Merci pour ta réponse.
Oui je débute, mon problème c'est que j'aprend rien si je ne pratique pas. Il faut dire que dans d'autre langage on ne séparait pas les déclarations et le <code> dans les. cpp
c'est vrai que c'est un peut le fouillis
tu veut dire que je devrai l'appeler avec une instance avec le mot clef new ?
Je vais donc bosser un peu pour essayer de le rendre plus correct en n’espérant pas faire le contraire.
Ma classe B servira dans ncurse, ou une boucle pour le clavier tournera en permanence de même pour la souris
j'y place donc un code euh disons pour faire plus simple et voir si ça tourne.
ncuse est aussi pas simple a comprendre car la doc est en anglait
Je crois qu'on peut s'en passer mai c'est dans le but d'apprendre, je trouve que faire tourner du code dans un thread demande plus de boulôt.
plus tard quand mes connaissances le permettront je passerai à l'optimisation.
voir les erreurs dans l'ensemble permet de mieux faire dans l'ensemble.
cs_juju12
Messages postés966Date d'inscriptionsamedi 3 avril 2004StatutMembreDernière intervention 4 mars 20104 8 août 2009 à 01:25
Il faut créer une instance de classe pour l'utiliser, soit sur la pile
(B c_b;) soit sur le tas (B*p_b=new B(...);). Toi tu créais simplement une instance de classe c_thread, à aucun moment il n'y a de référence à B.