Probleme bei überladenen Funktionen
-
Hallo
Ich habe folgendes Problem: Ich will eine Funktion mehrfach überladen. Ich habe eine Art Stammfunktion (kenn kein besseres Wort) mit Argumenten und möchte aber, dass man nicht immer 10 Argumente übergeben muss und biete die Funktion auch in abgespeckter Version an. Nun will ich aus den abgespeckten Versionen heraus die Stammfunktion aufrufen. Dies klappt bei der ersten überladenen Funktion (nur 1 Argument) auch sehr gut, aber bei den anderen Funktionen bekomme ich immer die Fehlermeldung:
error C2660: 'Render' : function does not take 10 arguments
oder
error C2661: 'Render' : no overloaded function takes 10 arguments
Zur Verdeutlichung meines Problems hier noch der Quellcode:
void CText::Render(std::string p_strText, SDL_Surface* p_pDestinationSurface, int p_iPosX, int p_iPosY,int p_iRed, int p_iGreen, int p_iBlue, int p_iBkRed, int p_iBkGreen, int p_iBkBlue) { m_Color.r = p_iRed; m_Color.g = p_iGreen; m_Color.b = p_iBlue; m_BkColor.r = p_iBkRed; m_BkColor.g = p_iBkGreen; m_BkColor.b = p_iBkBlue; m_Rect.x = p_iPosX; m_Rect.y = p_iPosY; if(!(m_pTextSurface = TTF_RenderText_Shaded(m_pFont, p_strText.c_str(),m_Color,m_BkColor))) { Logfile->fTextOut("Fehler beim rendern des Textes: %s",TTF_GetError()); exit(1); } else { SDL_BlitSurface(m_pTextSurface, NULL, p_pDestinationSurface, &m_Rect); SDL_FreeSurface(m_pTextSurface); } } void CText::Render(std::string p_strText) //das funktioniert { Render(p_strText,Framework->GetScreen(),0,0,255,255,255,0,0,0); } void Render(std::string p_strText, int p_iPosX, int p_iPosY) //hier error 2660 (siehe oben) { Render(p_strText,Framework->GetScreen(),p_iPosX, p_iPosY,255,255,255,0,0,0); } void Render(std::string p_strText, int p_iPosX, int p_iPosY, int p_iRed, int p_iGreen, int p_iBkBlue) //ab hier error 2661 { Render(p_strText,Framework->GetScreen(), p_iPosX, p_iPosY, p_iRed, p_iGreen, p_iBkBlue,0,0,0); } void Render(std::string p_strText, int p_iRed, int p_iGreen, int p_iBlue) { Render(p_strText,Framework->GetScreen(),0,0,p_iRed,p_iGreen,p_iBlue,0,0,0); }Danke für eure Mühen
chrische
-
Hallo,
Vielleicht sollten die anderen 3 Funktionen auch zu CText:: gehören.
-
Einmal hast Du CText::Render mit 10 Parametern und einmal freie Funktionen. Jetzt kannst du so natürlich nicht einfach Render von CText aufrufen. Du brauchst entweder ein Objekt von CText oder CText::Render müsste statisch sein (ich glaube mal nicht, dass Du letzteres willst).
-
Hallo
Braunstein schrieb:
Hallo,
Vielleicht sollten die anderen 3 Funktionen auch zu CText:: gehören.
Ich wusste, dass ich auf dem Schlauch stehe. Das passiert einem eben, wenn man manche Funktionen manuell einfügt und manche vom Assistenten.
Wieder ein Fehler weg, der mir hoffentlich nicht mehr passiert.Danke
chrische
-
Mach Dir keine Hoffnungen .. wird wieder passieren...
