使用继承时,需要对象引用才能访问非静态字段、成员或 属性
an object reference is required to access non-static field, member, or property when using inheritance
您好,我在 Visual Studios C# 2010 Express 中遇到了一些奇怪的问题。我试图让一个对象继承另一个对象,但我一直收到同样的错误。
Error 1 An object reference is required for the non-static field,
method, or property
'PurpleThing.BasicSprite.texture' C:\Users\HAL-9000\Desktop\Examples\PurpleThing\PurpleThing\PurpleThing\AnimateSprite.cs 13 39 PurpleThing
这是父项 class 我希望另一个 class 继承自:
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;}
}
}
}
这是我想从上面继承的class:
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)
{
}
}
}
我是一个非常新的程序员,所以这个程序不是很复杂,但我无法解决这个问题。先感谢您。 :)
听起来您正试图将参数从您的构造函数传递到基本构造函数。
但是您的构造函数实际上没有任何参数,因此派生的 class 中的 texture
没有任何意义。
您需要将参数添加到派生类型的构造函数。
您好,我在 Visual Studios C# 2010 Express 中遇到了一些奇怪的问题。我试图让一个对象继承另一个对象,但我一直收到同样的错误。
Error 1 An object reference is required for the non-static field, method, or property 'PurpleThing.BasicSprite.texture' C:\Users\HAL-9000\Desktop\Examples\PurpleThing\PurpleThing\PurpleThing\AnimateSprite.cs 13 39 PurpleThing
这是父项 class 我希望另一个 class 继承自:
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;}
}
}
}
这是我想从上面继承的class:
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)
{
}
}
}
我是一个非常新的程序员,所以这个程序不是很复杂,但我无法解决这个问题。先感谢您。 :)
听起来您正试图将参数从您的构造函数传递到基本构造函数。
但是您的构造函数实际上没有任何参数,因此派生的 class 中的 texture
没有任何意义。
您需要将参数添加到派生类型的构造函数。