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++/CLI Discussion :

[Visual Express] Declaration de variables


Sujet :

C++/CLI

  1. #1
    Membre régulier Avatar de userB
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2005
    Messages
    147
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2005
    Messages : 147
    Points : 106
    Points
    106
    Par défaut [Visual Express] Declaration de variables
    Bonjour tout le monde,
    J'ai actuellement un probleme ultra, mais alors ultra con, il m'est impossible de declarer mes variables ....
    Je sais vraiment pas quoi faire, je vous laisse seul juge :
    mon .cpp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #include "StdAfx.h"
    #include "Simulation.h"
    #include <string.h>
    #include <cstdlib>
    #include <cstdio>
    Simulation::Simulation(void)
    {
    }
    mon .h :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #pragma once
     
    ref class Simulation
    {
    private:
        int i ;
    	std :: string nom;
    public:
    	Simulation(void);
     
    };
    Mes messages d'erreurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    c:\dev\v1\tsim2006v1\tsim2006v1\Simulation.h(7) : error C2653: 'std' : is not a class or namespace name
     
    c:\dev\v1\tsim2006v1\tsim2006v1\Simulation.h(7) : error C2146: syntax error : missing ';' before identifier 'nom'
     
    c:\dev\v1\tsim2006v1\tsim2006v1\Simulation.h(7) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
     
    c:\dev\v1\tsim2006v1\tsim2006v1\Simulation.h(7) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    Voila, j'ai pourtant fait 3 ans de C++ sous borland et je n'ai jamais eu de tel soucis, je suis completement desemparé.
    J'espere que vous pourrez m'aider.
    Si tu ne sais pas m'expliquer pourquoi ca ne marche pas, alors tu ne sauras pas m'expliquer pourquoi ca marche.. -Un illustre chef de projet-

  2. #2
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    faudrait inclure iostream dans le .h

  3. #3
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Ou utiliser les strings de .Net (System::String).

    Egalement, on ne doit plus inclure <string.h> en C++. On inclut soit <string> (ui déclare les std::string), soit <cstring> (l'équivalent du string.h du C)
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  4. #4
    Membre régulier Avatar de userB
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2005
    Messages
    147
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2005
    Messages : 147
    Points : 106
    Points
    106
    Par défaut
    incredibleu !! voila que ca marche, c'est merveilleux, fantastique !!!
    Un tres tres grand merci ( mais il me semblait avoir appris que les include etait uniquement dans les .cpp )
    Maintenant une derniere question et je me sentirais enfin libre de toute entraves de developpemnt @visual express:
    j ai un dernier message d'erreur sur la declaration de ma variable de type string :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Matrice.cpp
    c:\dev\v1\tsim2006v1\tsim2006v1\Matrice.h(8) : 
    error C4368: cannot define 'nom' as a member of managed 'Matrice': mixed types are not supported
    .
    Pour information sa declaration se deroule comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #pragma once
    #include <iostream>
    //#include <string.h>
     
     
    ref class Matrice
    {
    private:
    	  std :: string MatNom;
    	  int _nbrligne;
    edit : Seconde reponse pas vu entretemps, j ai actualisé le code en modifiant les string.h par des <string>, mais le probleme subsiste toujours
    Si tu ne sais pas m'expliquer pourquoi ca ne marche pas, alors tu ne sauras pas m'expliquer pourquoi ca marche.. -Un illustre chef de projet-

  5. #5
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    tu as deux solutions
    - soit tu utilises les String de .Net (ce qui est une bonne solution )
    - soit tu enleves ce warning avec la commande suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #pragma warning( once : 4368 )

  6. #6
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    C'est pas un warning : C'est une erreur.

    Aussi, la seconde solution, c'est : "soit tu fais de Matrice un type non-managé".
    Autant dire que la première, c'est la bonne...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  7. #7
    Membre régulier Avatar de userB
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2005
    Messages
    147
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2005
    Messages : 147
    Points : 106
    Points
    106
    Par défaut
    place au jeune, place au nouveau, je vais donc me tourner vers la premiere solution.
    Un grand merci a vous tous!
    Si tu ne sais pas m'expliquer pourquoi ca ne marche pas, alors tu ne sauras pas m'expliquer pourquoi ca marche.. -Un illustre chef de projet-

  8. #8
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    Citation Envoyé par Médinoc
    C'est pas un warning : C'est une erreur.
    sisi c'est un warning http://msdn2.microsoft.com/en-us/library/xhfb39es.aspx
    on peut bien sur utiliser des objets "natif" dans un classe managés, le plus simple étant d'utiliser un pointeur

  9. #9
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Ah, OK.
    Citation Envoyé par MSDN
    This warning is always issued as an error. Use the warning pragma to disable C4368.
    Je ne savais même pas que c'était possible avec ce compilo, puisque l'option "warnings as errors" génère une erreur à part plutôt que de traiter directement le warning comme une erreur...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  10. #10
    Membre régulier Avatar de userB
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2005
    Messages
    147
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2005
    Messages : 147
    Points : 106
    Points
    106
    Par défaut
    Bon je suis vraiment confus de vous faire perdre votre temps avec des questions aussi .... comment dire .... debile ? naive ? Mais cette refonte des normes standard avec visual express C++ me sort par les trou de nez.
    Je n'arrive pas a declarer un vector tout bete, je me fait jeter dans tous les sens
    J'ai essayé avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    std::vector<int> MonVecteur;
    //--------------------------
    typedef std::vector<int> MesMat;
    MesMat m_MesMat;
    J'ai toujour le meme message d'erreur qui me renvoit a une page assez incomprehensible :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    c:\dev\v1\tsim2006v1\tsim2006v1\Simulation.h(16) : error C3633: cannot define 'Hist_Pitch' as a member of managed 'Simulation'
            because of the presence of assignment operator 'std::vector<_Ty>::operator =' on class 'std::vector<_Ty>'
            with
            [
                _Ty=int
            ]
            C:\Program Files\Microsoft Visual Studio 8\VC\include\vector(549) : see declaration of 'std::vector<_Ty>::operator ='
            with
            [
                _Ty=int
            ]
    J'ai effectuer plusieurs recherche et notamment sur le site mais j'en revien toujours a la declaration "classique" d'un vector a savoir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::vector<TypeDeDonné> NomVector;
    Quant a la page a laquelle Visual me renvoit, elle me donne ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    vector()
    		: _Mybase()
    		{	// construct empty vector
    		_Buy(0);
    		}
    Comment m'y prendre ?
    Si tu ne sais pas m'expliquer pourquoi ca ne marche pas, alors tu ne sauras pas m'expliquer pourquoi ca marche.. -Un illustre chef de projet-

  11. #11
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    comme déjà dit, si tu veux utiliser un objet natif dans une classe managée, le plus simple est de passer par un pointeur

    sinon, utilise les conteneurs de .Net ou ne fait pas de classe managée

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 30/06/2006, 11h51
  2. Réponses: 6
    Dernier message: 23/09/2005, 13h54
  3. Problème déclaration de variable dans un package
    Par LE NEINDRE dans le forum Modules
    Réponses: 3
    Dernier message: 23/08/2005, 19h26
  4. Comment déclarer une variable globale
    Par davkick dans le forum C
    Réponses: 13
    Dernier message: 20/05/2005, 19h50
  5. declarer une variable dans le query analyzer
    Par graphicsxp dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 29/03/2005, 12h26

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