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 :

Compilation code source


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 137
    Par défaut Compilation code source
    Bonjour je suis en train d'essayer de compiler un code source mais j'ai des problemes lors de la compilation que je comprends pas le code a été développé sous VC et je l'ai adapté sous linux.

    Voici le message d'erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    g++ -c Analysis.cpp -o Analysis.o
    Analysis.cpp: In function 'void DiscardMotif()':
    Analysis.cpp:108: error: no match for 'operator=' in 'MotifIter = MotifMap. std::map<_Key, _Tp, _Compare, _Alloc>::erase [with _Key = int, _Tp = MotifItem_t, _Compare = std::less<int>, _Alloc = std::allocator<std::pair<const int, MotifItem_t> >](MotifIter)'
    /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/stl_tree.h:152: note: candidates are: std::_Rb_tree_iterator<std::pair<const int, MotifItem_t> >& std::_Rb_tree_iterator<std::pair<const int, MotifItem_t> >::operator=(const std::_Rb_tree_iterator<std::pair<const int, MotifItem_t> >&)
    Analysis.cpp: In function 'void UniqueMotif()':
    Analysis.cpp:126: error: no match for 'operator=' in 'Next = MotifMap. std::map<_Key, _Tp, _Compare, _Alloc>::erase [with _Key = int, _Tp = MotifItem_t, _Compare = std::less<int>, _Alloc = std::allocator<std::pair<const int, MotifItem_t> >](Next)'
    /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/stl_tree.h:152: note: candidates are: std::_Rb_tree_iterator<std::pair<const int, MotifItem_t> >& std::_Rb_tree_iterator<std::pair<const int, MotifItem_t> >::operator=(const std::_Rb_tree_iterator<std::pair<const int, MotifItem_t> >&)
    make: *** [Analysis.o] Error 1
    Merci de votre aide

  2. #2
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut,

    En gros, il se plaint du fait qu'il n'y a pas d'opérateur d'affectation...

    Il te signale que ce l'opérateur d'affectation possible passe par un itérateur de type std::pair.

    Visiblement, si on en croit les renseignements donnés, tu essaie de supprimer une entrée dans un tableau associatif de type std::map<int, MotifItem_t>.

    La fonction erase de la std::map utilise un itérateur, et il est donc vraissemblable que tu doive disposer d'un itérateur sur l'élément à supprimer:
    • Soit en tant que membre de ta classe
    • Soit fournis comme paramètre à ta fonction
    • Soit recherché dans la fonction sur base d'une clé fournie en paramètre de la fonction


    PS: Il aurait été beaucoup plus facile pour tout le monde si tu avais fournis le code des fonctions incriminées, à savoir DiscardMotif et UniqueMotif
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 137
    Par défaut
    pas de probleme les voici :

    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
     
    void DiscardMotif()
    {
    	map<int,MotifItem_t>::iterator MotifIter;
    	bool bAdd;
     
    	for(MotifIter=MotifMap.begin();MotifIter!=MotifMap.end();bAdd?MotifIter++:MotifIter)
    	{
    		bAdd=false;
    		if((int)(unsigned int)(*MotifIter).second.ProteinID.size()<Motif_MemberSize)
    			MotifIter = MotifMap.erase(MotifIter);
    		else
    			bAdd=true;
    	}
    }
     
    void UniqueMotif()
    {
    	map<int, MotifItem_t>::iterator MotifIter, Next;
    	bool bAdd;
     
    	for(MotifIter=MotifMap.begin();MotifIter!=MotifMap.end();MotifIter++)
    	{
    		Next=MotifIter;
    		for(++Next;Next!=MotifMap.end();bAdd?Next++:Next)
    		{
    			bAdd=false;
    			if((*MotifIter).second.ProteinID==(*Next).second.ProteinID && (*MotifIter).second.ProteinPos[0]==(*Next).second.ProteinPos[0])
    				Next=MotifMap.erase(Next);
    			else
    				bAdd=true;
    		}
    	}
    }

  4. #4
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 137
    Par défaut
    j'ai enlevé "MotifIter =" dans la première et "Next=" et il rale plus

  5. #5
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 137
    Par défaut
    par contre lors de la compilation en verufuant les bugs un par un j'ai obtenu ça comme message d'erreur


    g++ -c Analysis.cpp -o Analysis.o
    g++ -c MotifFinding5.cpp -o MotifFinding5.o
    g++ -c ReadProteinFile.cpp -o ReadProteinFile.o
    g++ -c stdafx.cpp -o stdafx.o
    g++ -c SubstitutionMatrix.cpp -o SubstitutionMatrix.o
    g++ -c Tools.cpp -o Tools.o
    g++ -o motif Analysis.o MotifFinding5.o ReadProteinFile.o stdafx.o SubstitutionMatrix.o Tools.o -g -g -lm -L blosum.h blosum62.h stdafx.h structure.h
    /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/crt1.o: In function `_start':
    (.text+0x20): undefined reference to `main'
    collect2: ld returned 1 exit status
    make: *** [motif] Error 1

  6. #6
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 137
    Par défaut
    j'ai trouvé le problème.

    Merci tout de meme de votre message

Discussions similaires

  1. compiler code source de trueCrypt
    Par boubounagh dans le forum Visual C++
    Réponses: 1
    Dernier message: 02/10/2012, 19h12
  2. compiler code source BIRT 4.0
    Par maatrihard dans le forum BIRT
    Réponses: 0
    Dernier message: 30/06/2012, 20h28
  3. Ouvrir .vcproj, compiler codes sources
    Par Lyth_o dans le forum Visual Studio
    Réponses: 3
    Dernier message: 06/11/2011, 18h46
  4. compiler code source en "interne"
    Par kespy13 dans le forum Général Java
    Réponses: 5
    Dernier message: 30/04/2008, 14h46
  5. probleme compilation code source sur autre pc
    Par milach dans le forum Visual C++
    Réponses: 1
    Dernier message: 18/04/2008, 09h06

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