使用继承时,需要对象引用来访问非静态字段、成员或属性

本文关键字:字段 静态 成员 属性 访问 继承 对象引用 | 更新日期: 2023-09-27 17:50:41

你好,我在Visual studio c# 2010 Express中遇到了一些奇怪的问题。我试图让一个对象从另一个对象继承,但我一直得到相同的错误。

错误1非静态字段需要对象引用,方法或属性"PurpleThing.BasicSprite。texture' C:'Users'HAL-9000'Desktop'Examples'PurpleThing'PurpleThing'PurpleThing'AnimateSprite.cs 13 39 PurpleThing

这是我希望另一个类继承的父类:

    namespace PurpleThing
{
    class BasicSprite
    {
        //Variable Drawing parameters
        protected Texture2D texture;
        protected Color tintColor;
        protected Vector2 spritePosition;
        public BasicSprite(Texture2D texture, Color tintColor)
        {
            //Saving external data into private/protected data
            this.texture = texture;
            this.tintColor = tintColor;
            //Adding a default point to draw the sprite at
            spritePosition = Vector2.Zero;
        }
        public virtual void Draw(SpriteBatch spriteBatch)
        {
            spriteBatch.Draw(texture, spritePosition, tintColor);
        }
        //Number of public outlets for information and remote changes
        public Texture2D Texture
        {
            get { return (texture); }
            set { texture = value; }
        }
        public Vector2 SpritePosition
        {
            get { return (spritePosition); }
            set { spritePosition = value; }
        }
        public Color TintColor
        {
            get { return (tintColor);}
            set { tintColor = value;}
        }
    }
}

这是我想从上面那个继承的类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
namespace PurpleThing
{
    class AnimateSprite : BasicSprite
    {
        public AnimateSprite() : base(texture, tintColor)
        {
        }
    }
}

我是一个很新的程序员,所以这个程序不是很复杂,但我不能解决这个问题。提前谢谢你。:)

使用继承时,需要对象引用来访问非静态字段、成员或属性

听起来像是你试图将参数从构造函数传递给基构造函数。

但是你的构造函数实际上没有任何参数,所以派生类中的texture没有任何意义。

需要将参数添加到派生类型的构造函数中。