error C2061/C1903 bei Template in Visual C++ 2010



  • Hallo,
    Ich versuche mich momentan an einen kleinen Spiel in der Konsole.
    Es sollen 2 Figuren sich gegenseitig angreifen, bis eine Zerstört wird.
    Wenn ich meinen Quelltext kompilimieren möchte, kommen folgende Fehlermeldungen:

    1>------ Erstellen gestartet: Projekt: SchrottAndMore, Konfiguration: Debug Win32 ------
    1>  Main.cpp
    1>c:\XXX\main.cpp(57): error C2061: Syntaxfehler: Bezeichner 'ANGREIFER'
    1>c:\XXX\main.cpp(57): fatal error C1903: Weiterverarbeitung nach vorherigem Fehler nicht möglich; Kompilierung wird abgebrochen.
    ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
    

    Der Quelltextausschnitt:
    (Entschuldigung für die deutschen Variabelnamen, aber so behalte ich besser den Überblick 🙂 )

    #include <iostream>
    enum Magiearten {FEUER, WASSER, ERDE, LUFT, STAHL, LICHT = 10, FINSTERNIS};
    class Held{
    
    private:
    	int Leben;
    	int MaxLeben;
    	int Attacke;
    	int Angriffe;
    	Magiearten Magie;
    
    public:
    	//Standart - Konstruktor
    	Held(int leben, int attacke, Magiearten magie):
    		Leben(leben),Attacke(attacke),
    		Angriffe(0), MaxLeben(Leben), Magie(magie){}
    //Memberfunktionen, um Leben zu verändern bzw. auszulesen
    	const int get_Leben(){
    		return Leben;
    	}
    	void set_Leben(int sLeben){
    		if(Leben +=sLeben > MaxLeben)
    			Leben = MaxLeben;
    		else{
    			Leben +=sLeben;
    		}
    	}
    //Memberfunktionen, um Attacke zu verändern  bzw. auszulesen
    	const int get_Attacke(){
    		return Attacke;
    	}
    	void set_Attacke(int sAttacke){
    		Attacke +=sAttacke;
    	}
    //Memberfunktionen, um Angriff zu verändern bzw. auszulesen
    	const int get_Angriffe(){
    		return Angriffe;
    	}
    	void set_Angriffe(int sAngriffe){
    		++Angriffe;
    		if(Angriffe%10 == 0)
    			++Attacke;
    	}
    
    //Memberfunktionen, um Magie zu verändern bzw. auszulesen
    	const int get_Magie(){
    		return Magie;
    	}
    	void set_Magie(Magiearten sMagie){
    		Magie = sMagie;
    	}
    
    };
    
    //1. Attacke(Typ Feuer): Schlagen
     template<ANGREIFER, VERTEIDIGER>int Schlagen(ANGREIFER angreifer, VERTEIDIGER verteidiger){
    	int temp = (angreifer.get_Attacke()/10);
    	if(angreifer.get_Magie == FEUER)
    		temp *=4;
    	if(verteidiger.get_Magie() == WASSER)
    		temp = *=0.5;
    	verteidiger.set_Leben((-1)*temp);
    	return temp;
    }
    
    int main(){
    	Held h1(100, 20, FEUER);
    	Held h2(100, 20, WASSER);
    	while(h1.get_Leben() != 0 && h2.get_Leben() != 0){
    		if(h2.get_Leben()!= 0)Schlagen(h1, h2);
    		if(h1.get_Leben()!= 0)Schlagen(h2, h1);
    		std::cout<< "Held 1 hat "<< h1.get_Leben() <<"/100 Leben"<<std::endl;
    		std::cout<< "Held 2 hat "<< h2.get_Leben() <<"/100 Leben"<<std::endl;
    
    	}
    }
    

    weiß jemand, was ich falsch mache?
    MFG



  • Short.ask(); schrieb:

    weiß jemand, was ich falsch mache?

    Was willst du denn in Zeile 57 machen, und wieso machst du es nicht?



  • typename ?



  • Swordfish schrieb:

    typename ?

    😡 Mann, un ich kuck mindestens ne halbe stunde auf den Code und seh diesen mini - Fehler einfach nicht!!! 😡

    Vielen Dank 😃


Anmelden zum Antworten