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 :

jeton Dispose non résolu lors de la compilation


Sujet :

C++/CLI

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 79
    Par défaut jeton Dispose non résolu lors de la compilation
    Bonjour,

    J'utilise visual studio 2008 pro.

    J'ai codé une classe fifo_prod_cons en template.
    Elle ne me pose pas de souci si je l'utilise avec "fifo_prod_cons<std::string> queue;" ou avec "fifo_prod_cons<int> ^ queue;", mais lorsque je fais "fifo_prod_cons<std::string> ^ queue;", le compilo me donne l'erreur
    1>2_synchr.obj : error LNK2020: jeton non résolu (06000108) fifo_prod_cons<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >:ispose
    1>2_synchr.obj : error LNK2020: jeton non résolu (06000109) fifo_prod_cons<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >:ispose
    Le smilley utilise le D de Dispose.

    D'après ce que j'ai vu sur internet, Dispose est une méthode appellée dans le destructeur, mais je n'ai pas trouvé comment l'implémenter et je ne suis d'ailleur pas sûr que cela soit autorisé, puisque si je rajoute "void Dispose(){};" comme méthode de fifo_prod_cons, le compilo me donne l'erreur
    fifo_prod_cons.h(57) : error C2605: 'Dispose'*: cette méthode est réservée dans une classe managée
    1> souhaitez-vous définir un destructeur*?
    1> \fifo_prod_cons.h(60)*: voir la référence à l'instanciation de la classe modèle 'fifo_prod_cons<T>' en cours de compilation
    Est ce quelqu'un saurait me dire ce que je dois faire?

    voici le code de ma classe:
    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
     
     
    #using <System.dll>
    using namespace System;
    using namespace System::Threading;
     
    #include "queue_pool.h"
     
     
    template<typename T>
    ref class fifo_prod_cons 
    {
    private:
    	Mutex^ mutex_de_queue;
    	Semaphore ^ nb_elements_ds_queue;
    	Semaphore ^ nb_places_libres_ds_queue;
     
     
    public:
    	queue_pool<T>* p_queue_pool;  // car on peut avoir un pointeur vers un objet non managé mais pas un objet non managé dans une classe managé
     
    	fifo_prod_cons(){
    		p_queue_pool = new queue_pool<T>;
    		mutex_de_queue = gcnew Mutex;
    		nb_elements_ds_queue = gcnew Semaphore(0,INT_MAX);
    		nb_places_libres_ds_queue = gcnew Semaphore(INT_MAX,INT_MAX);
    	};
     
    	~fifo_prod_cons(){};
     
        T pop(){
            T res;
    		nb_elements_ds_queue->WaitOne();
            mutex_de_queue->WaitOne();
            res = p_queue_pool->pop();
            mutex_de_queue->ReleaseMutex();
    		nb_places_libres_ds_queue->Release();
            return res;
        };
     
        void push(T t){
    		nb_places_libres_ds_queue->WaitOne();
            mutex_de_queue->WaitOne();
            p_queue_pool->push(t);
            mutex_de_queue->ReleaseMutex();
    		nb_elements_ds_queue->Release();
        };
     
    	bool empty(){
    		bool res;
    		mutex_de_queue->WaitOne();
            res = p_queue_pool->empty();
            mutex_de_queue->ReleaseMutex();
    		return res;
    	}
     
     
     
    };

  2. #2
    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
    Il ne s'agit pas de C++, mais de C++/CLI. Un langage différent bien qu'en grande partie compatible avec le C++.

    En l'occurence, le compilateur te dit qu'il ne trouve pas la définition de la fonction Dispose. Sachant que tu n'as pas le droit de la définir, mais qu'elle est indirectement définie si tu associe à ta classe un "destructeur" (syntaxe avec ! au lieu de ~ pour le finalizer, si je ne me suis pas emmêlé les pinceaux encore une fois...).

    Je transfère le message sur un forum où les gens seront probablement plus à même de t'en dire plus.
    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.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 79
    Par défaut
    Il n'y a plus d'erreur une fois qu'il y a un gcnew de l'objet dans le code.
    Je ne le faisais pas dans le code de ma classe car elle travaillait sur un pointeur de cet objet.

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 07/12/2011, 07h11
  2. Réponses: 3
    Dernier message: 20/04/2009, 15h00
  3. [WIN32]error LNK2020: jeton non résolu, DLL?
    Par Ammo32 dans le forum Visual C++
    Réponses: 2
    Dernier message: 25/04/2007, 22h31
  4. Réponses: 7
    Dernier message: 18/03/2007, 02h13
  5. Jeton non résolu???
    Par vdumont dans le forum C++
    Réponses: 9
    Dernier message: 14/03/2006, 13h09

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