Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Ошибка инициализации статического поля шаблонного класса

46K
14 ноября 2011 года
nILruM
30 / / 10.02.2010
Здравствуйте возникла следующая проблема. Имеется код:
Код:
Fabric.h

template<class Ident, class Ret>
    class TCreater
    {
        typedef Ret (*TFuncCreateObj)();
        typedef std::map<Ident, TFuncCreateObj> TMapCreaters;
        static TMapCreaters FMapCreaters;
    public:
        static bool AddType(Ident ANameType, TFuncCreateObj AFuncCreate)
        {
            FMapCreaters[ANameType] = AFuncCreate;
        };

        static Ret CreateObj(Ident ANameType)
        {
            if(FMapCreaters[ANameType] != NULL)
                return FMapCreaters[ANameType]();
            else
                return NULL;
        };
    };

template<class Ident, class Ret> TCreater<Ident, Ret>::TMapCreaters TCreater<Ident, Ret>::FMapCreaters;

Other.cpp

#include"Fabric.h"

typedef TCreater<String, TObject*> TFabricObj;

namespace{

TObject* CreateObj() { return new TObject(); }

const bool B = TFabricObj::AddType("TObject",CreateObj );

};

Так вот при добавлении нового типа функцией AddType FMapCreaters почему то еще не создано хотя в h файле объявление стоит.
С чем это может быть связанно?
260
14 ноября 2011 года
Ramon
1.1K / / 16.08.2003
Цитата: nILruM

Так вот при добавлении нового типа функцией AddType FMapCreaters почему то еще не создано хотя в h файле объявление стоит.
С чем это может быть связанно?



 
Код:
template <class Ident, class Ret>
    typename TCreater<Ident, Ret>::TMapCreaters TCreater<Ident, Ret>::FMapCreaters;
46K
15 ноября 2011 года
nILruM
30 / / 10.02.2010
Цитата: Ramon
 
Код:
Код :
template <class Ident, class Ret>
    typename TCreater<Ident, Ret>::TMapCreaters TCreater<Ident, Ret>::FMapCreaters;


А поподробней можно?)

46K
16 ноября 2011 года
nILruM
30 / / 10.02.2010
Как можно еще объявить шаблонную статическую переменную?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог