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

Langage C++ Discussion :

Héritage multiple avec Visual C++ 2008


Sujet :

Langage C++

  1. #1
    Membre habitué
    Inscrit en
    Avril 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 11
    Par défaut Héritage multiple avec Visual C++ 2008
    bonjour,

    je me retrouve confronter a une erreur dans la quelle je patauge un peu.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ref class CONNEXION : public AT_COMMAND , public GPIB , public LAN , public RS232 , public USB
    avec toute les classes déclarer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ref class USB
    ref class RS232
    ref class LAN
    ref class GPIB
    ref class AT_COMMAND
    et la problème!!!

    Error 1 error C2890: 'CONNEXION' : a ref class can only have one non-interface base class c:\_ddm\atop_charact_test_automation\branches\ferez_acita_tlmt4064\code\inci\connexion.h 67
    Error 2 error C4368: cannot define 'stringCONNEXIONType' as a member of managed 'CONNEXION': mixed types are not supported c:\_ddm\atop_charact_test_automation\branches\ferez_acita_tlmt4064\code\inci\connexion.h 93
    Error 3 error C4368: cannot define 'stringCONNEXIONName' as a member of managed 'CONNEXION': mixed types are not supported c:\_ddm\atop_charact_test_automation\branches\ferez_acita_tlmt4064\code\inci\connexion.h 95
    si je déclare toutes les classe sans "ref", ca compile mais la je ne peu plus utiliser des types "manager" de la classe System::String mais je doit utiliser de std::string.

    Error 1 error C3265: cannot declare a managed 'systemStringRS232PortName' in an unmanaged 'RS232' c:\_ddm\atop_charact_test_automation\branches\ferez_acita_tlmt4064\code\inci\rs232.h 95
    classe RS232:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
    #ifndef __RS232__
    #define __RS232__
     
    class RS232
    	{
    	/*==============================part of class public===========================*/
    	public:
    		/*==============================constructor====================================*/
    		/// <summary>default constructor</summary>
    		/// <returns>objet RS232</returns>
    		/// <example>RS232^ a = gcnew RS232;</example>
    		RS232(void);
     
    		/*===============================destructor====================================*/
    		/// <summary>default destructor</summary>
    		/// <returns>none</returns>
    		/// <example>a->~RS232();</example>
    		~RS232(void);
     
    		/*==============================public methode=====================================*/
    		/// <summary>list all COM PORT connected, attention methode static</summary>
    		/// <returns>array System::String^>^ list of the name PORT COM</returns>
    		/// <exceptions>Win32Exception if the port can't return any thing</exceptions>
    		/// <example>array System::String^>^ arraySystemStringListPORTRS232 RS232::arraySystemStringRS232ListAllCOMPORT();</example>
    		static array <System::String^>^ arraySystemStringRS232ListAllCOMPORT(void);
     
    		/*==============================part of class private==========================*/
    	private:
     
    		/*==============================part of class protected========================*/
    	protected:
    		/// <summary>systemStringRS232PortName is System::String, to define the name of connexion</summary>
    		System::String^ systemStringRS232PortName;
    		/// <summary>systemStringRS232BaudRate is System::String, to define the baud rate of connexion</summary>
    		System::String^ systemStringRS232BaudRate;
    		/// <summary>systemStringRS232ByteSize is System::String, to define the util data of connexion</summary>
    		System::String^ systemStringRS232ByteSize;
    		/// <summary>systemStringRS232Parity is System::String, to define the parity of connexion</summary>
    		System::String^ systemStringRS232Parity;
    		/// <summary>systemStringRS232StopBit is System::String, to define the bit stop of connexion</summary>
    		System::String^ systemStringRS232StopBit;
    		/// <summary>systemStringRS232lowControl is System::String, to define the low control of connexion</summary>
    		System::String^ systemStringRS232lowControl;
    	};
     
    #endif /*__RS232__*/
    /*=============================================================================*/
    /*EOF*/
    classe Connexion
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    #ifndef __CONNEXION__
    #define __CONNEXION__
     
    class CONNEXION : public AT_COMMAND , public GPIB , public LAN , public RS232 , public USB
    	{
    	/*==============================part of class public===========================*/
    	public:
    		/*==============================constructor====================================*/
    		/// <summary>default constructor</summary>
    		/// <returns>objet CONNEXION</returns>
    		/// <example>CONNEXION* a = new CONNEXION;</example>
    		CONNEXION(void);
    		/// <summary>constructor with 1 parameter</summary>
    		/// <param name = "stringINSTRUMENTNameGiveByUser">string name CONNEXION</param>
    		/// <returns>objet CONNEXION</returns>
    		/// <example>CONNEXION* a = new CONNEXION("my connexion");</example>
    		CONNEXION(std::string stringINSTRUMENTNameGiveByUser);
     
    		/*===============================destructor====================================*/
    		/// <summary>default destructor</summary>
    		/// <returns>none</returns>
    		/// <example>delete a;</example>
    		~CONNEXION(void);
     
    		/*==============================part of class private==========================*/
    	private:
     
    		/*==============================part of class protected========================*/
    	protected:
    		/// <summary>stringCONNEXIONType is string, to define the type of connexion</summary>
    		std::string stringCONNEXIONType;
    		/// <summary>stringCONNEXIONName is string, to define a name of connexion</summary>
    		std::string stringCONNEXIONName;
    	};
     
    #endif /*__CONNEXION__*/
    /*=============================================================================*/
    /*EOF*/

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    Bonjour,

    sans faire de managé, le message d'erreur semble pourtant des plus explicites
    a ref class can only have one non-interface base class
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    Tu fais là du C++/CLI, et non du C++ pur. La partie managée du C++/CLI ne permet pas l'héritage multiple (sauf l'héritage multiple d'interface).

    Pas trop le choix...

    Donc soit tu le fais en managé, et pas d'héritage multiple de classes (mais ça peut se simuler avec de la composition et du copier/coller de code), soit tu le fais en pur C++, et les difficultés de manipuler des System::String (ce n'est pas impossible, il faut juste passer par des pointeurs et faire gaffe à la durée de vie).
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  4. #4
    Membre habitué
    Inscrit en
    Avril 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 11
    Par défaut
    c'est bien ce que je pensais.
    je vas devoir prendre mon mal en patience et faire les conversions de type entre mes classe et les interfaces graphiques..


    Merci a vous 2

    Sujet à fermer

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

Discussions similaires

  1. Héritage multiple avec la contrainte XOR :
    Par choko83 dans le forum UML
    Réponses: 10
    Dernier message: 04/06/2008, 14h29
  2. Réponses: 1
    Dernier message: 20/05/2008, 18h05
  3. [CR 2008]Intégration de CR avec visual studio 2008
    Par bcgetpause dans le forum SDK
    Réponses: 0
    Dernier message: 02/05/2008, 09h42
  4. [WCF]Service WCF avec Visual Studio 2008
    Par chiv dans le forum Windows Communication Foundation
    Réponses: 5
    Dernier message: 23/02/2008, 17h07
  5. Réponses: 4
    Dernier message: 13/02/2008, 15h05

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