我觉得自己就像一个完整的dork。我一直是一个编码器,而且我还没有遇到过这种语言,我想,我一直在用“额外”的东西覆盖构造函数。所以,我截断了一些类解释:后裔类的构造函数问题
public enum Flags : ushort
{
Item = 1,
Player = 2
}
public class Item
{
private Flags _flags;
private int _owner;
private String _pwd;
public Item(Flags flags, int owner, String pwd = null)
{
_owner = owner;
_flags = flags;
_pwd = pwd;
}
}
public class Connection
{
... stuff irrelevant to question
}
所以,当玩家登录时,我希望能够采取的Item
后代其类型Player
,并具有连接 - 因为实际上这只是一个项目。
所以,我做这个作为首发:
public class Player : Item
{
public Connection Conn;
}
它说:
项目不包含一个构造函数0参数
好了,在我眼里,我从来没有说过它..玩家永远不会被“创造”只从项目复制,现有的项目,我添加到它,一个额外的属性(不是这是什么将保持为我的代码,但它是一个起点)。因此,我不想手动将实际的20多个属性从一个复制到另一个。现实我希望能够使用
Player p = (Player)item_wanted;
,然后分配给它的连接.. p Player
是永远不会被直接创建。我不想将连接分配给Item,因为它只是活跃的玩家,技术上玩家可以有多个连接。
当然,第一愚以为是
Public Payer(Item i)
{
this = (Player) i;
}
呀可悲的是不能做的,一个构造函数,对吗? :(但实际上,这几乎我想要的!
你问之前,我也考虑增加项目连接...但是在逻辑上你不会想到这样的说法轮...
所以,我怎么得到它呢?我想添加一个属性,并把它称为别的东西...
好的,我得到它为什么说关于教练,失望它没有去与原来的可用的但很好,我知道了,但是,由于原始项目已经存在,我不想复制,我想添加功能...我放弃了。此问题可以被关闭。**
没有定义构造函数的类是隐含给定的默认构造函数。当你继承它时,假设隐式默认构造函数会调用基类的默认构造函数,但是你的基类没有。 – Jodrell
我认为这也可能是设计问题。为什么你的'Player'需要继承'Item'?它是模型'是'的关系(即“播放器”是'Item')吗? – Bartosz
如果你曾经玩过泥土/粪便,这将会更有意义。玩家是数据库中的一个项目,唯一不同的是它被登录为并具有玩家标志。所以,一旦连接,我想要更容易访问,我的连接有一个项目附加到它,但现实是球员有一个连接..你想说“Player.NotifyLine”找不到球员的连接,并告诉连接发送线路。项目只存在一次。因此,将所有属性复制到播放器,意味着您需要不断地更新基础项目。真实的项目视为播放器 – BugFinder