Fehler weis nicht weiter



  • Hallo bekomme von MS VS6 folgenden fehler

    error C2664: 'SetStatus' : cannot convert parameter 1 from 'void (void)' to 'ST'

    bei der datei cartoon.cpp

    [void Cartoon::Recover(void)
    {
    		//Dhlosh Metablhton
    	time_t Temp = time(NULL);
    //
    	if(Temp == -1)
    	{
    		cout << "!!!FATAL ERROR!!! __FILE__ 000 012. H ora einai xalasmenh." << endl;
    		abort();
    	}
    
    			//Kurio Programma
    
    	//an isxh tote peremine na ksekourastis
    	if( (this->itsStrain.GetStatus() == Rest) && (this->GetTime() == 0) )
    	{
    		this->SetTime(Temp);
    	}
    
    	//an perase o xronos anamonis ksana perpata
    	if( Temp >= this->GetTime() + this->itsStrain.GetMaxStrain() )
    	{
    		this->SetTime(0);
    		this->itsStrain.SetStatus(Move);//hier fehler
    	}
    }
    

    wobei Set Status so auschaut in datei Strain.cpp

    void Strain::SetStatus(ST In)
    {
    	//dhlosh metablhton
    //
    
    		//Kurio programma
    	if(In == STFalse)
    	{
    		cout << "!!!FATAL ERROR!!! __FILE__ 000 006. La8os isodos dedomenon to programma termatizh" << endl;
    		abort();
    	}
    
    	this->Status = In;
    }
    

    uns ST so definiert ist in datei Strain.hpp

    #ifdef VarMove
      #undef VarMove
    #endif
    #define VarMove 1
    
    #ifdef VarRest
      #undef VarRest
    #endif
    #define VarRest -1
    
    #ifdef VarSTFalse
      #undef VarSTFalse
    #endif
    #define VarSTFalse 0
    
    typedef enum{Move = VarMove,Rest = VarRest, STFalse = VarSTFalse}ST;
    

    ich vermute der fehler ist irgendwie bei typedef da es doch lokal ist aber wie erweiter ich typedef auf alle file's, darum void(void) weil der compiler typef nicht sieht oder???. kann mir einer helfen 😞



  • Du bist sicher, das cartoon.cpp strain.hpp einbindet?

    Und warum sieht die strain.hpp überhaupt so bekloppt aus? Wofür die defines? Warum das typedef?

    enum ST {Move = 1, Rest = -1, STFalse = 0};
    

    So ist es soch gleich übersichtlicher, und lessbarer. Fragt sich nur, warum die werte überhaupt wichtig sind? du wirst doch eh nur mit den Konstanten der Aufzählung vergleichen, oder?
    Dann würde sogar ein

    enum ST {Move, Rest, STFalse};
    

    reichen.



  • ich würde typedef auch weglassen und sogar nur
    enum{
    Move, //0
    Rest, //1
    STFalse //2
    };
    ohne Angabe von ST und überall wo Typ ST übergeben wird short übergeben
    und ich würde die strain.hpp schon in der cartoon.h einbinden



  • Warum sollte es keinen Typ ST geben? Ist doch schwachsinn.

    und ich meinte hpp, nicht cpp, sorry, danke.



  • @helium: hast schon Recht mit dem ST, weiß auch nicht was ich damit wollte 😕


Anmelden zum Antworten