Я читал, что вы не можете объявлять статические переменные / методы внутри общего класса, и я действительно не знаю, как решить мою проблему или обойти ее, поэтому я прошу вашего руководства.
То, что я хочу, это общий «индекс», который будут расширены всеми моими основными классами.
Я создаю игровой движок, и пример тому, что у меня будут разные игровые состояния, которые расширяют State
, а в свою очередь расширяют Nexus<State>
. Мне нужна статическая голова и хвост, чтобы я мог сохранить связанный список всех игровых состояний, поскольку все они добавляются в этот список при создании.
Другой пример: у меня будут разные игровые объекты, которые все расширяют GameObject
, которые, в свою очередь, расширяют Nexus<GameObject>
.
Этот индекс называется Nexus
:
public abstract class Nexus<T>
{
private static T head = null;
private static T tail = null;
private T next = null;
private static int num = 0;
protected Nexus() { this.Add( (T)this ); }
public T Add( T obj )
{
((Nexus)obj).next = null;
if( num++ == 0 ) head = tail = obj;
else tail = ( tail.next = obj );
return obj;
}
}
Если у кого-то есть другое решение или обходной путь, я весь в ушах!