On Tuesday, 18 June 2013 at 21:43:17 UTC, Agustin wrote:
On Tuesday, 18 June 2013 at 21:39:35 UTC, Agustin wrote:
Hello!, i'm having a problem and i don't know how to fix it :(.

/**
* Define a common structure for any event.
*
* @author Wolftein <wolft...@ghrum.org>
*/
public class Event(T) {

        private bool cancelled_;
        private shared static HandlerList!T handler_;
        
        /**
         * Return if the event was cancelled.
         */
        final public bool isCancelled() {
                return cancelled_;
        }
        
        /**
         * Set the cancelled flag.
         *
         * @param cancelled the cancelled flag value
         */
        final public void setCancelled(bool cancelled) {
                cancelled_ = cancelled;
        }
        
        /**
         * Gets the unique handler of the event, the handler
         * contains a list of delegates to be executed when
         * the event triggers an action.
         */
        final public HandlerList!T getHandler() {
                return handler_;
        }
        
        /**
         * Gets the unique handler of the event, the handler
         * contains a list of delegates to be executed when
         * the event triggers an action. This function is
         * static, so can be called like Template.getHandler()
         */
        final public HandlerList!T getHandler() {
                return handler_;
        }
}

---------------------------------------------------------------
class PlayerLoginEvent : Event!(PlayerLoginEvent) {
        int x;
}

src\Event\Event.d(41): Error: cannot implicitly convert expression (handler_) of type shared(HandlerList) to ghrum.event.HandlerList.HandlerList!(PlayerLoginEvent).HandlerList src\Event\Event.d(51): Error: cannot implicitly convert expression (handler_) of type shared(HandlerList) to ghrum.event.HandlerList.HandlerList!(PlayerLoginEvent).HandlerList


The last function is:

        final static public HandlerList!T getHandler() {
                return handler_;
        }

I just fixed by replacing shared with __gshared. Another issue that i have is that if i have.

public class Event(T) {
        static public HandlerList!T getHandler() {
                if( handler_ is null ) {
                        handler_ = new HandlerList!T();
                }
                return handler_;
        }
}

public class MyPlayerEvent : Event!MyPlayerEvent {
}

MyPlayerEvent.getHandler(); -> Error: need 'this' for getHandler type HandlerList().

Thanks in advance!

Reply via email to