2010-10-15 7 views
1

question rapide vraiment: J'ai ce code:erreur du compilateur étrange

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

namespace Hovel { 
    public abstract class DamageType { 
     public string GetKillString(string instigatorName, string victimName) { 
      return killString.Replace("<inst>", instigatorName).Replace("<vict>", victimName); 
     } 
     protected string killString = "ERROR_NO_KILLSTRING_DEFINED"; 

     public string GetDamageString(string instigatorName, string victimName) { 
      return damageString.Replace("<inst>", instigatorName).Replace("<vict>", victimName); 
     } 
     protected string damageString = "ERROR_NO_DAMAGESTRING_DEFINED"; 
    } 

    public class DamageType_Default : DamageType { 
     killString = "ERROR_DEFAULT_DAMAGE_TYPE"; 
     damageString = "ERROR_DEFAULT_DAMAGE_TYPE"; 
    } 
} 

Pour moi, cela a l'air bien, mais je reçois cette erreur pour les deux seules lignes DamageType_Default:

Invalid token '=' in class, struct, or interface member declaration 

Alors ... Qu'est-ce que le?

Répondre

4

Le problème est les lignes suivantes

killString = "ERROR_DEFAULT_DAMAGE_TYPE"; 
damageString = "ERROR_DEFAULT_DAMAGE_TYPE"; 

Ces lignes se produisent dans une définition de classe à la portée réservée aux définitions des membres, mais sont plutôt des instructions de code normales. Vous devrez les mettre dans une méthode (peut-être un constructeur)

public DamageType_Default : DamageType { 
    public DamageType_Default() { 
    killString = "ERROR_DEFAULT_DAMAGE_TYPE"; 
    damageString = "ERROR_DEFAULT_DAMAGE_TYPE"; 
    } 
} 
+0

Ah, merci ... Je devrais probablement me coucher, hein. :) – Xenoprimate

+2

@Motig ou juste boire plus redbull :) – JaredPar

2

Vous définissez une classe DamageType_Default mais vous y ajoutez simplement du code, au lieu d'entrer dans un constructeur. Je pense que vous vouliez dire:

public class DamageType_Default : DamageType { 
    public DamageType_Default() : base() { 
    killString = "ERROR_DEFAULT_DAMAGE_TYPE"; 
    damageString = "ERROR_DEFAULT_DAMAGE_TYPE"; 
    } 
} 

qui définira un constructeur dans la classe de base, et le constructeur définira ces valeurs aux nouvelles redéfinis après la construction de la classe de base.

0

Il vous manque un constructeur. Plus précisément, ces deux lignes de code doivent être dans un constructeur.