2016-07-27 18 views
1

私はダメージを受け、健康状態を持つアイテムの基本クラス設定をしています。しかし、何らかの理由で私はアクセスできないエラーが出るので、私は基本変数にアクセスできません。基本クラスの変数にアクセスできないエラー

この私のコードの設定されています

public abstract class Items 
{ 

    public float health { get; private set; } 
    public Items() 
    { 
     health = 100f; 
    } 
} 

public class Sword : Items 
{ 
    public string name { get; private set; } 
    public float maxPower { get; private set; } 

    public Sword(string n float mPower) : base() 
    { 
     name = n; 
     maxPower = mPower; 

    } 

    public void UpdateDamage(float damageAmount) 
    { 
     health = Mathf.Clamp(health - damageAmount,0,100); 
    } 
} 

エラーは次のとおりです。

'Items.healthは' 私が設定しているため、私はと推測、その保護レベル

にアクセスできないそれは公衆に私の損害の方法でそれにアクセスすることができたが、私はそうは思わない。ここでどこが間違っていたのですか?

+1

@Dabe - [c#naming convensions](https://msdn.microsoft.com/en-us/library/ms229002(v = vs.110).aspx)についてもここで読むことをお勧めします。 –

答えて

3

Itemsのセッターをprivateからprotectedに変更してください。それはprivate setなので、そのクラスだけが派生クラスでなくても他のクラスに設定することができます。

  • 派生クラスを有効にするには、protected set(下記)に変更します。 (publicを)それを設定するために誰を有効にするには
  • 単語を削除し、のみを残す - デフォルトだから性質check MSDN

    access modifiersの詳細についてはpublic

です:

public abstract class Items 
{ 
    public float health { get; protected set; } 
    public Items() 
    { 
     health = 100f; 
    } 
} 
+0

ああ、保護された意味は何ですか?私は、保護されているとは変更できないと考えていた。 – Sir

+0

@Dave - ちょっとした説明を追加しました –

+0

私の現在の設定、またはバーチャル/オーバーライドを使用してプライベートセットを維持しながらbase.UpdateDamage()を呼び出すことをお勧めします。 – Sir

関連する問題