Шаблонный указатель на функцию-член - PullRequest
0 голосов
/ 11 января 2012

Привет всем с новым годом и т. Д.

У меня проблемы с шаблонами указатель на некоторую функцию:

Код выглядит следующим образом:

    template<class T>
    class EventMapper
    {
    private:
        typedef std::wstring const (T::*messageHandler)(std::wstring const & myMessage);                //!< Templated function pointer
        typedef std::tr1::unordered_map<std::wstring, messageHandler> umap;                             //!< abbreviation for eventHandler map container
        typedef umap::const_iterator eventCIt;                                                          //!< abbreviation for event map const_iterator
        typedef umap::iterator  eventIt;                                                                //!< abbreviation for event map iterator

        //test func ptr
        T const & myInstance;
        umap myEventMap;
        eventCIt myCurrentCommand;                                                                      //!< current selected command
    public:
        EventMapper( T const & instance_in) : myInstance(instance_in){}

        //register an event handler
        void registerHandler(std::wstring const & cmd_in, messageHandler handler_in)
        {
            this->myEventMap.insert(umap::value_type(cmd_in, handler_in));
        }

Я получаю эту ошибку в MSVS 2008 SP1:

Error   3   error C2146: syntax error : missing ';' before identifier 'eventCIt'    o:\AX_FusRecAlg\include\Reconstruction\JobListEditor\Types.h    19  AX.Services.Reconstruction.JobListDataProviderTest

Не очень описательный. Возможно ли то, что я пытаюсь сделать? Любые советы будут приветствоваться! Спасибо.

1 Ответ

3 голосов
/ 11 января 2012

Чтобы исправить свой код, используйте typename:

        typedef typename umap::const_iterator eventCIt;                                                          //!< abbreviation for event map const_iterator
        typedef typename umap::iterator  eventIt;

Для получения дополнительной информации посмотрите зависимые от шаблона имена

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...