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

Problème de syntaxe ?


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2008
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2008
    Messages : 104
    Par défaut Problème de syntaxe ?
    Hello les gens !

    Donc voilà je me lance petit à petit dans le c++.
    J'ai une classe qui ne compile pas, en voici un extrait (du début jusqu'à l'erreur) :

    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
    #ifndef __NETACTIONSYNC_H__
    #define __NETACTIONSYNC_H__
     
    #pragma once
     
    #ifdef __GNUC__
    // GCC requires a full decl of TSerialize, not just a fwd decl.
    #include <ISerialize.h>
    #endif
     
    template <class ActionRep>
    class CNetActionSync
    {
    public:
       CNetActionSync() : m_havePublished(false), m_lastReceived(0), m_lastCancelation(1) {}
     
       static const NetworkAspectType CONTROLLED_ASPECT = ActionRep::CONTROLLED_ASPECT;
    L'erreur se trouve donc à la dernière ligne, et selon visual studio, un ";" devrait se trouver avant CONTROLLED_ASPECT.
    Je ne suis pas encore familier avec la syntax du c++, y a t'il vraiment une erreur de syntaxe ou bien ai-je oublié de paramétrer quelque chose dans mon projet ?
    C'est une portion du Cryengine, mais leurs forum sont en mode "sleep" donc je tente ma chance ici

    Merci

  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,

    tu as surement oublié un include qui définit ce qu'est NetworkAspectType.
    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
    Membre chevronné
    Femme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2009
    Messages : 236
    Par défaut
    Visual lève se genre d'erreur pour les problème de syntaxe tel que les parenthèses, virgule ou autre joyeuseté
    As tu bien fermé les } de ta classe, les parenthèses de tes paramètres, ect?

  4. #4
    Membre actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2008
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2008
    Messages : 104
    Par défaut
    Je n'ai rien modifié dans ce fichier, il doit fonctionner en toute logique.

    Je pense que c'est un mécanisme de visual studio que je comprend pas sur la compilation des classes.

    Dans mes tests, on notera 3 classes :
    - NetActionSync : Celle qui pose problème.
    - VehicleMovementArcadeWheeled : Include NetActionSync
    - VehicleMovementLevitator : Hérite de VehicleMovementArcadeWheeled

    NetActionSync et VehicleMovementArcadeWheeled sont des classes déjà présentes dans la solution.
    VehicleMovementLevitator c'est une classe que j'ai créé.

    Si je compile VehicleMovementArcadeWheeled aucun soucis.
    Si je compile VehicleMovementLevitator l'erreur apparaît.
    Pourtant dans les 2 cas la classe NetActionSync doit être compilée non ?




    Pour info, les erreurs j'ai

    1>j:\jeux\cryengine 3\code\cryengine\cryaction\network\netactionsync.h(32): error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque*: C++ ne prend pas en charge int par défaut
    1> j:\jeux\cryengine 3\code\cryengine\cryaction\network\netactionsync.h(83)*: voir la référence à l'instanciation de la classe modèle 'CNetActionSync<ActionRep>' en cours de compilation
    1>j:\jeux\cryengine 3\code\cryengine\cryaction\network\netactionsync.h(32): error C2146: erreur de syntaxe*: absence de ';' avant l'identificateur 'CONTROLLED_ASPECT'
    1>j:\jeux\cryengine 3\code\cryengine\cryaction\network\netactionsync.h(32): error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque*: C++ ne prend pas en charge int par défaut
    1>j:\jeux\cryengine 3\code\cryengine\cryaction\network\netactionsync.h(32): error C2864: 'CNetActionSync<ActionRep>::CONTROLLED_ASPECT'*: seules les données membres static const intégrales peuvent être initialisées dans une classe
    1>j:\jeux\cryengine 3\code\cryengine\cryaction\network\netactionsync.h(50): error C2061: erreur de syntaxe*: identificateur 'EEntityAspects'
    La classe au complet


    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
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    /*************************************************************************
      Crytek Source File.
      Copyright (C), Crytek Studios, 2001-2005.
     -------------------------------------------------------------------------
      $Id$
      $DateTime$
      Description: Helper template to provide correct action synchronization
                         for actors and vehicles
      
     -------------------------------------------------------------------------
      History:
      - 17:9:2004 : Created by Craig Tiller
     
    *************************************************************************/
     
    #ifndef __NETACTIONSYNC_H__
    #define __NETACTIONSYNC_H__
     
    #pragma once
     
    #ifdef __GNUC__
    // GCC requires a full decl of TSerialize, not just a fwd decl.
    #include <ISerialize.h>
    #endif
     
    template <class ActionRep>
    class CNetActionSync
    {
    public:
    	CNetActionSync() : m_havePublished(false), m_lastReceived(0), m_lastCancelation(1) {}
     
    	static const NetworkAspectType CONTROLLED_ASPECT = ActionRep::CONTROLLED_ASPECT;
     
    	// publish current state of actions - returns true if net-sync required
    	bool PublishActions( ActionRep rep )
    	{
    		bool changed = false;
    		if (m_lastReceived > m_lastCancelation)
    		{
    			rep = m_received;
    		}
    		if (!m_havePublished || m_published != rep)
    		{
    			m_published = rep;
    			changed = true;
    		}
    		m_havePublished = true;
    		return changed;
    	}
    	void Serialize( TSerialize ser, EEntityAspects aspects )
    	{
    		// ensure CONTROLLED_ASPECT only has one bit set
    		CRY_ASSERT((CONTROLLED_ASPECT & (CONTROLLED_ASPECT-1)) == 0);
    		if ((aspects & CONTROLLED_ASPECT) == 0)
    			return;
    		if (ser.IsReading())
    		{
    			m_received.Serialize(ser, aspects);
    			m_lastReceived = gEnv->pRenderer->GetFrameID();
    		}
    		else // writing
    		{
    			CRY_ASSERT(m_havePublished);
    			m_published.Serialize(ser, aspects);
    		}
    	}
    	void CancelReceived()
    	{
    		m_lastCancelation = gEnv->pRenderer->GetFrameID();
    	}
    	void UpdateObject( typename ActionRep::UpdateObjectSink obj )
    	{
    		if (m_lastReceived > m_lastCancelation)
    			m_received.UpdateObject( obj );
    	}
     
    private:
    	ActionRep m_published;
    	ActionRep m_received;
    	bool m_havePublished;
    	uint32 m_lastCancelation;
    	uint32 m_lastReceived;
    };
     
    #endif

  5. #5
    Membre Expert

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    1 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 1 391
    Par défaut
    error C2864: 'CNetActionSync<ActionRep>::CONTROLLED_ASPECT'*: seules les données membres static const intégrales peuvent être initialisées dans une classe
    Tu peux corriger cette erreur et reposter celles qui restent ?

    Pour ce qui est de l'apparition du problème, c'est une classe template, la compilation ou non d'un autre fichier peut créer une/des instanciations de la classe révélant ainsi de nouvelles erreurs.

  6. #6
    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
    error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque*: C++ ne prend pas en charge int par défaut
    Citation Envoyé par Bousk Voir le message
    tu as surement oublié un include qui définit ce qu'est NetworkAspectType.
    http://msdn.microsoft.com/en-us/libr...(v=vs.80).aspx
    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.

  7. #7
    Membre actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2008
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2008
    Messages : 104
    Par défaut
    Tu peux corriger cette erreur et reposter celles qui restent ?
    Hm je ne vois pas par quoi je pourrai remplacer ça ^^.


    tu as surement oublié un include qui définit ce qu'est NetworkAspectType.
    En faisant F12 sur NetworkAspectType, je suis amené sur une nouvelle classe (INetwork.h) donc c'est qu'il la trouve non ?

    Bon merci pour vos réponses en tout cas (je retourne bosser)

Discussions similaires

  1. Problème de syntaxe - elements['x'].value
    Par Equus dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 22/02/2005, 11h22
  2. [Interbase] Problème de syntaxe SQL
    Par navis84 dans le forum InterBase
    Réponses: 4
    Dernier message: 22/12/2004, 17h07
  3. Problème de syntaxe
    Par Mister_FX dans le forum ASP
    Réponses: 5
    Dernier message: 30/06/2004, 10h01
  4. Problème de syntaxe ADO ...
    Par bendev dans le forum ASP
    Réponses: 2
    Dernier message: 15/04/2004, 14h38
  5. Réponses: 2
    Dernier message: 08/03/2004, 15h10

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