Partage
  • Partager sur Facebook
  • Partager sur Twitter

no known conversion for argument from '<unresolved

je comprends pas l'erreur :(

Sujet résolu
    26 mars 2019 à 22:08:33

    Bonjour,

    Voilà j'ai une class 'UintEditBox' servant à modifier un unsigned int (comme une boîte d'édition). J' ai une structure 'GroundBossData' qui contient des données relative à un boss de jeu vidéo qui contient un unsigned int représentant la valeur d'argent que le joueur gagne suite à la destruction de ce dernier.

    Voici le header de la classe UintEditBox :

    #ifndef UNSIGNED_INT_EDIT_BOX_H
    #define UNSIGNED_INT_EDIT_BOX_H
    
    class UintEditBox
    {
    private:
    	BoxEvents events;
    	BoxRectDisplaying boxRect;
    	BoxCursor cursor;
    	BoxContentDisplay content;
    	
    	std::string stringOfUint;
    	std::reference_wrapper<unsigned> UintValue;
    	bool hasStringChanged;
    
    public:
    	UintEditBox(std::ofstream& errorLog, sdl2::RendererWindow& rndWnd, const SDL_Rect& boxSize, unsigned int fontSize, unsigned& refValue);
    	~UintEditBox() = default;
    	
    	UintEditBox( const UintEditBox& ) = delete;
    	UintEditBox& operator= ( const UintEditBox& ) = delete;
    	
    	UintEditBox( UintEditBox&& ) = default;
    	UintEditBox& operator= ( UintEditBox&& ) = default;
    	
    	void drawBoxWithoutFocus(sdl2::RendererWindow& rndWnd);
    	void getFocusForEdition(sdl2::RendererWindow& rndWnd, const Offset& mousePos, bool mouseButton);
    	unsigned getCurrentValue() const;
    	void changeReference(unsigned& newRef, sdl2::RendererWindow& rndWnd);
    	
    private:
    	void addFigure(const std::string& figure);
    	void deleteLastFigure();
    	void recordEntry(bool& quitEdition);
    	void appendNewFigureToUintString();
    	void quitUintEdition(bool& quitEdition);
    	void drawEverything(sdl2::RendererWindow& rndWnd);
    	void updateString();
    
    };
    
    #endif //UNSIGNED_INT_EDIT_BOX_H

    Le header de la structure GroundBossData :

    #ifndef GROUND_BOSS_H
    #define GROUND_BOSS_H
    
    #include "levels/boss/groundBoss/subObjects/texturesThings.h"
    #include "levels/boss/groundBoss/subObjects/squaresProperties.h"
    #include "levels/boss/groundBoss/subObjects/livingStructures.h"
    #include "levels/boss/groundBoss/subObjects/weaponThings.h"
    #include "levels/boss/groundBoss/subObjects/basicThings.h"
    
    struct PlayerWeapons;
    
    struct GroundBossData
    {	
    	bool isLoadingPerfect;
    	GroundBossBasicThings basic;
    	GroundBossLivingStruct living;
    	GroundBossSqrProp squareProp;
    	GroundBossTextures textures;
    	GroundBossWeapons weapons;
    	unsigned valueAtDestruction;
    	
    	GroundBossData();
    	GroundBossData(std::ofstream& errorLog, sdl2::RendererWindow& rndWnd);
    	~GroundBossData() = default;
    	GroundBossData( const GroundBossData& ) = delete;
    	GroundBossData& operator= ( const GroundBossData& ) = delete;
    	
    	void setLoadingHasFailed();
    	bool wasLoadingPerfect() const;
    	
    	#ifdef EDITM
    	void drawBuildingPart(sdl2::RendererWindow& rndWnd, const Offset& position, const Coord3D& coord, bool isAboveTexture);
    	#endif 
    	
    	void animateAnimTextures();
    	
    	void drawBasics(sdl2::RendererWindow& rndWnd, const GameScrolling& scrolling);
    	void drawLivingParts(sdl2::RendererWindow& rndWnd, const GameScrolling& scrolling);
    	void collisionWithTomcatWeapons(PlayerWeapons& playerWeapons, const GameScrolling& scrolling, bool& hasGroundBossToughnessChanged);
    };
    
    
    #endif//GROUND_BOSS_H
    

    Le header de la classe contenant le UintEditBox :

    #ifndef GLOBAL_SETTINGS_THUMBNAIL_H
    #define GLOBAL_SETTINGS_THUMBNAIL_H
    
    #include "generic/data/SDL2/sdl2_includes.h"
    #include "generic/interface/textures/SDL2_TextTexture.h"
    #include "generic/interface/widgets/boxesIncludes.h"
    #include "levels/boss/groundBoss/groundBoss.h"
    
    class GlobalSettingsThumbnail
    {
    private:
    	sdl2::TextTexture shootActivityText;
    	UintEditBox shootActivityTimeBox;
    	sdl2::TextTexture valueAtDestructionText;
    	UintEditBox valueAtDestructionBox;
    
    public:
    	explicit GlobalSettingsThumbnail(std::ofstream& errorLog, sdl2::RendererWindow& rndWnd, const sdl2::Font& arialFont, std::unique_ptr<GroundBossData>& dataPtr);
    	~GlobalSettingsThumbnail() = default;
    	GlobalSettingsThumbnail( const GlobalSettingsThumbnail& ) = delete;
    	GlobalSettingsThumbnail& operator= ( const GlobalSettingsThumbnail& ) = delete;
    	
    	void drawEverything(sdl2::RendererWindow& rndWnd);
    	void getFocusForEdition(sdl2::RendererWindow& rndWnd, const Offset& mousePos, bool mouseButton);
    	
    private:
    	void drawBoxes(sdl2::RendererWindow& rndWnd);
    	void drawTexts(sdl2::RendererWindow& rndWnd) const;
    };
    
    
    #endif //GLOBAL_SETTINGS_THUMBNAIL_H

    Et le fichier cpp/source de GlobalSettingsThumnail :

    #include "edition/groundBoss/objects/thumbnailsComponents/globalSettingsThumbnail.h"
    #include "edition/groundBoss/objects/widgets/groundBossEditConsts.h"
    #include "constTypes/sdlColors.h"
    
    GlobalSettingsThumbnail::GlobalSettingsThumbnail(std::ofstream& errorLog, sdl2::RendererWindow& rndWnd, const sdl2::Font& arialFont, std::unique_ptr<GroundBossData>& dataPtr):
    	shootActivityText{errorLog, rndWnd, arialFont, "Shoot Activity time:", BLACK_COL, 18*SQR_SIZE+SQR_SIZE/4, false, 12*SQR_SIZE+SQR_SIZE/4, true},
    	shootActivityTimeBox{errorLog, rndWnd, SDL_Rect{22*SQR_SIZE, 12*SQR_SIZE, GRNDBOSS::EDITBOX_W, GRNDBOSS::EDITBOX_H}, GRNDBOSS::FONT_SIZE, dataPtr->weapons.getActivityTime},
    	valueAtDestructionText{errorLog, rndWnd, arialFont, "Value at destruction:", BLACK_COL, 18*SQR_SIZE+SQR_SIZE/4, false, 14*SQR_SIZE+SQR_SIZE/4, true},
    	valueAtDestructionBox{errorLog, rndWnd, SDL_Rect{22*SQR_SIZE, 14*SQR_SIZE, GRNDBOSS::EDITBOX_W, GRNDBOSS::EDITBOX_H}, GRNDBOSS::FONT_SIZE, dataPtr->valueAtDestruction}
    {
    	
    }
    
    void GlobalSettingsThumbnail::drawEverything(sdl2::RendererWindow& rndWnd)
    {
    	drawBoxes(rndWnd);
    	drawTexts(rndWnd);
    }
    
    void GlobalSettingsThumbnail::getFocusForEdition(sdl2::RendererWindow& rndWnd, const Offset& mousePos, bool mouseButton)
    {
    	shootActivityTimeBox.getFocusForEdition(rndWnd, mousePos, mouseButton);
    	valueAtDestructionBox.getFocusForEdition(rndWnd, mousePos, mouseButton);
    }
    
    void GlobalSettingsThumbnail::drawBoxes(sdl2::RendererWindow& rndWnd)
    {
    	shootActivityTimeBox.drawBoxWithoutFocus(rndWnd);
    	valueAtDestructionBox.drawBoxWithoutFocus(rndWnd);
    }
    
    void GlobalSettingsThumbnail::drawTexts(sdl2::RendererWindow& rndWnd) const
    {
    	shootActivityText.draw(rndWnd);
    	valueAtDestructionText.draw(rndWnd);
    }

    Et j'ai donc un message d'erreur que je ne comprends pas, même après quelques recherches sur internet avec des mots clés :

    /bin/sh -c '/usr/bin/make -j4 -e -f  "editor.mk"  MakeIntermediateDirs && /usr/bin/make -j4 -e -f  "editor.mk"  ./Debug/sources_edition_groundBoss_objects_thumbnailsComponents_globalSettingsThumbnail.cpp.o'
    ----------Building project:[ editor - Debug ] (Single File Build)----------
    /usr/bin/g++-8  -c  "/media/antoine/projetsLinux/projets/programmation/jeux/mercenaries/codelite/MercenariesProject/editor/sources/edition/groundBoss/objects/thumbnailsComponents/globalSettingsThumbnail.cpp" -std=c++17 -Wall -Wextra -pedantic -I/usr/include/SDL2 -D_REENTRANT -g -O0 -DEDITM  -o ./Debug/sources_edition_groundBoss_objects_thumbnailsComponents_globalSettingsThumbnail.cpp.o -I../commonFiles/sources -Isources -I.
    /media/antoine/projetsLinux/projets/programmation/jeux/mercenaries/codelite/MercenariesProject/editor/sources/edition/groundBoss/objects/thumbnailsComponents/globalSettingsThumbnail.cpp: In constructor 'GlobalSettingsThumbnail::GlobalSettingsThumbnail(std::ofstream&, sdl2::RendererWindow&, const sdl2::Font&, std::unique_ptr<GroundBossData>&)':
    /media/antoine/projetsLinux/projets/programmation/jeux/mercenaries/codelite/MercenariesProject/editor/sources/edition/groundBoss/objects/thumbnailsComponents/globalSettingsThumbnail.cpp:9:168: error: no matching function for call to 'UintEditBox::UintEditBox(<brace-enclosed initializer list>)'
      valueAtDestructionBox{errorLog, rndWnd, SDL_Rect{22*SQR_SIZE, 14*SQR_SIZE, GRNDBOSS::EDITBOX_W, GRNDBOSS::EDITBOX_H}, GRNDBOSS::FONT_SIZE, dataPtr->valueAtDestruction}
                                                                                                                                                                            ^
    In file included from ../commonFiles/sources/generic/interface/widgets/boxesIncludes.h:13,
                     from sources/edition/groundBoss/objects/thumbnailsComponents/globalSettingsThumbnail.h:6,
                     from /media/antoine/projetsLinux/projets/programmation/jeux/mercenaries/codelite/MercenariesProject/editor/sources/edition/groundBoss/objects/thumbnailsComponents/globalSettingsThumbnail.cpp:1:
    ../commonFiles/sources/generic/interface/widgets/uint_editBox.h:23:2: note: candidate: 'UintEditBox::UintEditBox(UintEditBox&&)'
      UintEditBox( UintEditBox&& ) = default;
      ^~~~~~~~~~~
    ../commonFiles/sources/generic/interface/widgets/uint_editBox.h:23:2: note:   candidate expects 1 argument, 5 provided
    In file included from ../commonFiles/sources/generic/interface/widgets/boxesIncludes.h:13,
                     from sources/edition/groundBoss/objects/thumbnailsComponents/globalSettingsThumbnail.h:6,
                     from /media/antoine/projetsLinux/projets/programmation/jeux/mercenaries/codelite/MercenariesProject/editor/sources/edition/groundBoss/objects/thumbnailsComponents/globalSettingsThumbnail.cpp:1:
    ../commonFiles/sources/generic/interface/widgets/uint_editBox.h:17:2: note: candidate: 'UintEditBox::UintEditBox(std::ofstream&, sdl2::RendererWindow&, const SDL_Rect&, unsigned int, unsigned int&)'
      UintEditBox(std::ofstream& errorLog, sdl2::RendererWindow& rndWnd, const SDL_Rect& boxSize, unsigned int fontSize, unsigned& refValue);
      ^~~~~~~~~~~
    ../commonFiles/sources/generic/interface/widgets/uint_editBox.h:17:2: note:   no known conversion for argument 5 from '<unresolved overloaded function type>' to 'unsigned int&'
    editor.mk:2288: recipe for target 'Debug/sources_edition_groundBoss_objects_thumbnailsComponents_globalSettingsThumbnail.cpp.o' failed
    make: *** [Debug/sources_edition_groundBoss_objects_thumbnailsComponents_globalSettingsThumbnail.cpp.o] Error 1
    ====1 errors, 4 warnings====
    


    Apparemment, le compilateur n'est pas d'accord avec le unsigned int "valueAtDestruction" de la classe GroundBossData que je donne en paramètre à la classe UintEditBox qui prend cet argument comme une référence vers "unsigned int".

    Merci :)

    • Partager sur Facebook
    • Partager sur Twitter

    Mon site web de jeux SDL2 entre autres : https://www.ant01.fr

      26 mars 2019 à 22:30:51

      C'est quoi le type de dataPtr-&gt;weapons.getActivityTime ?

      • Partager sur Facebook
      • Partager sur Twitter
        27 mars 2019 à 10:10:42

        Bonjour,

        getActivityTime est une fonction membre renvoyant une référence vers un unsigned int. Voici le code du header:

        unsigned& getActivityTime();
        const unsigned& getActivityTime() const;

        Et le cpp :

        unsigned& GroundBossWeapons::getActivityTime()
        {
        	return activityTime;
        }
        
        const unsigned& GroundBossWeapons::getActivityTime() const
        {
        	return activityTime;
        }
        • Partager sur Facebook
        • Partager sur Twitter

        Mon site web de jeux SDL2 entre autres : https://www.ant01.fr

          27 mars 2019 à 11:14:25

          Ok, ligne 17 de UintEditBox.h, c'est le constructeur le la classe.

          5ème paramètre, tu veux mettre une fonction dans un unsigned&, c'est quoi ton chausse-pied magique qui convertit une fonction en ce machin ? ;)

          C'est pas la fonction que tu dois passer, mais le résultat de l'appel de la fonction.

          Et comment qu'on appelle une fonction ? => "()".

          • Partager sur Facebook
          • Partager sur Twitter
          Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
            27 mars 2019 à 11:28:17

            Qu' est-ce que je suis c** ! :-°

            J'étais focalisé sur la ligne suivante :

            valueAtDestructionBox{errorLog, rndWnd, SDL_Rect{22*SQR_SIZE, 14*SQR_SIZE, GRNDBOSS::EDITBOX_W, GRNDBOSS::EDITBOX_H}, GRNDBOSS::FONT_SIZE, dataPtr->valueAtDestruction}

            Car g++ avais mis un chevron sur la dernière "curly brace" de la liste d'initialisation du constructeur et j'étais sur que l'erreur venait de la dernière ligne du constructeur (juste au-dessus). Pourtant je sais très bien que le chevron à cette place signifie une erreur dans la liste d'initialisation et pas forcement la dernière ligne de la liste d'initialisation (ça fait cinq ans que je code en C++ avec g++, mais je suis pas un expert). Bon ben c'est une faute d'étourderie hein, désolé, je sais très bien qu'une fonction s'appelle en mentionnant deux parenthèses sans rien entre (j'ai honte). :'(

            • Partager sur Facebook
            • Partager sur Twitter

            Mon site web de jeux SDL2 entre autres : https://www.ant01.fr

              27 mars 2019 à 11:32:33

              L’œil du con est redoutable, et je mis connait en conneries. ;)
              • Partager sur Facebook
              • Partager sur Twitter
              Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
                27 mars 2019 à 16:52:37

                Hésite pas à marquer le sujet comme résolu si c'est le cas. ;)
                • Partager sur Facebook
                • Partager sur Twitter
                  27 mars 2019 à 16:56:35

                  Voilà, c'est fait. :)
                  • Partager sur Facebook
                  • Partager sur Twitter

                  Mon site web de jeux SDL2 entre autres : https://www.ant01.fr

                  no known conversion for argument from '<unresolved

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown