IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

Insérer une classe dans un prog C++ Builder


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre extrêmement actif
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 221
    Par défaut Insérer une classe dans un prog C++ Builder
    J'avoue que je suis beginner en matière de POO. Avant, j'utilisais des classes prédéfinies mais maintenant j'en crée.
    J'ai créé une classe et je l'ai inséré dans le fichier .H généré pour Unit1 (Unit1.cpp et Unit1.h).
    Mais BCB dit que les méthodes de la classe ne doivent pas être définies là dedans. J'ai même créé un fichier .H séparé pour ma classe mais même chose.
    Alors je les place dans Unit1.cpp (qui est possible en Turbo C++):ça provoque l'erreur
    [C++ Erreur] Unit1.cpp(10): E2141 Erreur de syntaxe de déclaration

    Que faire? J'ai parcouru la Faq c++ et pas de réponse.
    randriano.dvp.com
    Développeur. Product Owner [Agile]. Sites web, mobile apps, système d'information (SI).

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 349
    Par défaut
    Tu mets ta déclaration de classe (ainsi que les éventuelles fonctions inline) dans le .h.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    class TMaClasse
    {
        ....
    public:
        void MaFonction(int nb);
        ....
    };
    Tu écris le code des fonctions membres dans le .cpp (tu n'oublies pas d'inclure ton .h dans le .cpp !)

    Ex:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #include "MaClasse.h"
     
    void TMaClasse::MaFonction(int nb)
    {
        ...
    }
    Cela dit, tu n'as pas dû bien chercher car tu trouves ça dans n'importe quel cours de C++ !

  3. #3
    Membre Expert
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Par défaut
    N'oublie pas de cliquer sur si la réponse te convient.

  4. #4
    Membre extrêmement actif
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 221
    Par défaut
    J'ai trouvé des faq d'insertion de classe mais pour Dev-C++.
    Sous Turbo C++, l'insertion de classe n'est pas un problème même dans le fichier cpp principal.
    Mais sous C++ Builder, faut-il toujours mettre un T au début du nom de classe? Comment utiliser alors la classe dans l'unité correspondant à Form1 par ex si elle est déclarée dans un fichier CPP et H séparés.
    Pour mon cas, ça fait la même erreur E2141.
    randriano.dvp.com
    Développeur. Product Owner [Agile]. Sites web, mobile apps, système d'information (SI).

  5. #5
    Membre éprouvé
    Inscrit en
    Mars 2002
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 105
    Par défaut
    Bonjour,

    Citation Envoyé par rakoto15
    J'ai trouvé des faq d'insertion de classe mais pour Dev-C++.
    Sous Turbo C++, l'insertion de classe n'est pas un problème même dans le fichier cpp principal.
    Ce n'est pas un problème d'outil de développement (Dev-C++, Turbo ou Builder), mais plutôt de langage ou même de structuration de programme.

    Citation Envoyé par rakoto15
    Mais sous C++ Builder, faut-il toujours mettre un T au début du nom de classe?
    Non. Il n'y a pas de règle pour nommer une classe, simplement de bonnes habitudes...

    Citation Envoyé par rakoto15
    Comment utiliser alors la classe dans l'unité correspondant à Form1 par ex si elle est déclarée dans un fichier CPP et H séparés.
    Pour mon cas, ça fait la même erreur E2141.
    Je pense que le plus simple serait de nous montrer le code qui pose problème.


    Nicolas

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 407
    Par défaut
    Salut !

    Le caractère "T" précédent le nom des classes, celles de BCB, n'est que purement anecdotique.
    A titre perso j'emploie souvent un "j"... sauf pour mes nouveux composants (qui s'ajoutent à la palette) et pour lesquels je laisse BCB rajouter un "T".

    Il suffit d'inclure le header de cette unité dans l'unité qui a besoin de connaître cette classe.
    Si le header de l'unité (principale) a également besoin de connaître cette classe il faudra déclarer cette inclusion avant le header de cette unité (principale).

    Le compilateur ne prend en compte lors de la compilation que ce qu'il a vu passer, comme s'il effectuait une compilation en une seule passe !

    A plus !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment insérer une classe dans un vector
    Par razily dans le forum SL & STL
    Réponses: 9
    Dernier message: 26/02/2010, 18h55
  2. Insérer un .class dans une applet
    Par ChPortos dans le forum Applets
    Réponses: 6
    Dernier message: 09/06/2008, 14h00
  3. [C#] [.NET] Lecture d'une classe dans un fichier
    Par niPrM dans le forum Windows Forms
    Réponses: 4
    Dernier message: 18/05/2004, 08h57
  4. insérer une date dans une table mssql
    Par ericmart dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 29/01/2004, 10h37
  5. [Crystal Reports 9] comment insérer une image dans Détails
    Par VVE dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 22/10/2003, 17h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo