基本クラス:
abstract class Base_strategy
{
public Base_strategy()
{
EnemyLastTurn = Choices.NULL;
score = 0;
}
static public void compare(ref Base_strategy player1, ref Base_strategy player2)
{
/* stuff */
}
abstract protected Choices firstTurn();
abstract protected Choices defectedLastTurn();
abstract protected Choices cooperatedLastTurn();
protected Choices EnemyLastTurn;
public int score;
public abstract void addScore_Sucker();
public abstract void addScore_Traitor();
public abstract void addScore_Punishment();
public abstract void addScore_Reward();
}
継承されたクラス:
class titfortat_strategy : Base_strategy
{
titfortat_strategy()
{
}
/* overridden functions */
}
コード:
titfortat_strategy p1, p2;
Base_strategy.compare(ref p1, ref p2);
エラーはArgument 1: cannot convert from 'ref titfortat_strategy' to 'ref Base_strategy'
Argument 2: cannot convert from 'ref titfortat_strategy' to 'ref Base_strategy'
なぜうまくいかないのかわかりません。ただし、そうすべきだと思われます...compare()
から継承された関数のみを呼び出しBase_strategy
、titfortat_strategy
引数の内部状態を変更する必要があるため、ref
. さらに情報が必要な場合は、コメントしてください。提供できるよう最善を尽くします。