На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Обратите внимание:
1. Прежде чем начать новую тему или отправить сообщение, убедитесь, что вы не нарушаете правил форума!
2. Обязательно воспользуйтесь поиском. Возможно, Ваш вопрос уже обсуждали. Полезные ссылки приведены ниже.
3. Темы с просьбой выполнить какую-либо работу за автора в этом разделе не обсуждаются.
4. Используйте теги [ code=cpp ] ...текст программы... [ /code ] для выделения текста программы подсветкой.
5. Помните, здесь телепатов нет. Старайтесь формулировать свой вопрос максимально грамотно и чётко: Как правильно задавать вопросы
6. Запрещено отвечать в темы месячной и более давности без веских на то причин.

Полезные ссылки:
user posted image FAQ Сайта (C++) user posted image FAQ Форума user posted image Наши Исходники user posted image Поиск по Разделу user posted image MSDN Library Online (Windows Driver Kit) user posted image Google

Ваше мнение о модераторах: user posted image B.V.
Модераторы: B.V.
  
> error C2947
    Переношу проект созданный в VS2005 на VS2013. На это
    ExpandedWrap disabled
      IC void getLR (TNode* N, xr_vector<T,typename allocator::helper<T>::result>& D)
      {
          if (N->left) getLR(N->left,D);
          D.push_back (N->val);
          if (N->right) getLR(N->right,D);
      }
    ругается
    error C2947: требуется ">" для завершения список аргументов шаблона, обнаружено "<"
    см. ссылку на создание экземпляров класса шаблон при компиляции "FixedMAP<K,T,allocator>"
    В чем проблема, как исправить ?
    Сообщение отредактировано: AndreySol -
      allocator как объявлен?
        Вроде это ?
        class ENGINE_API ISpatial_DB
        {
        private:
        xrCriticalSection cs;
        poolSS<ISpatial_NODE,128> allocator;
        .....

        На всякий случай сразу:
        class ENGINE_API ISpatial_NODE;
        Скрытый текст

        #ifndef xrPoolH
        #define xrPoolH
        #pragma once

        template <class T, int granularity>
        class poolSS
        {
        private:
        T* list;
        xr_vector<T*> blocks;
        private:
        T** access (T* P) { return (T**) LPVOID(P);}
        void block_create()
        {
        // Allocate
        VERIFY (0==list);
        list = xr_alloc<T> (granularity);
        blocks.push_back (list);

        // Partition
        for (int it=0; it<(granularity-1); it++)
        {
        T* E = list+it;
        *access(E) = E+1;
        }
        *access(list+granularity-1) = NULL;
        }
        public:
        poolSS()
        {
        list = 0;
        }
        ~poolSS()
        {
        for (u32 b=0; b<blocks.size(); b++)
        xr_free (blocks[b]);
        }
        T* create()
        {
        if (0==list) block_create();

        T* E = list;
        list = *access(list);
        return new (E) T();
        }
        void destroy (T* &P)
        {
        P->~T ();
        *access(P) = list;
        list = P;
        P = NULL;
        }
        void clear()
        {
        list = 0;
        for (u32 b=0; b<blocks.size(); b++)
        xr_free (blocks[b]);
        blocks.clear ();
        }
        };
        #endif

        Может проще будет заткнуть эту ошибку, если возможно ?

        P.S. Проект не мой, это движок Сталкер ТЧ 1.0006. Пока в нем не ориентируюсь, прошу сильно не пинать.
        Сообщение отредактировано: AndreySol -
          ну все ясно! :D
            В pollSS нет ничего с именем helper, значит allocator это что-то другое.
            А вообще, пальцем в небо, попробуйте так:
            ExpandedWrap disabled
              IC void getLR (TNode* N, xr_vector<T,typename allocator::template helper<T>::result>& D)
              Kray74,пальцем в небо вроде помогло... теперь следующий вопрос:
              на это:
              Скрытый текст
              ExpandedWrap disabled
                #pragma once
                 
                template <
                    typename _path_builder,
                    typename _vertex_allocator
                >
                struct CBuilderAllocatorConstructor {
                    template <template <typename _T> class _vertex>
                    class CDataStorage : public _path_builder::CDataStorage<_vertex>, public _vertex_allocator::CDataStorage<typename _path_builder::CDataStorage<_vertex>::CGraphVertex>
                    {
                    public:
                        typedef typename _path_builder::CDataStorage<_vertex>   CDataStorageBase;
                        typedef typename _vertex_allocator::CDataStorage<
                            typename _path_builder::CDataStorage<
                                _vertex
                            >::CGraphVertex
                        >   CDataStorageAllocator;
                        typedef typename CDataStorageBase::CGraphVertex CGraphVertex;
                        typedef typename CGraphVertex::_index_type  _index_type;
                 
                    public:
                        IC  CDataStorage    (const u32 vertex_count);
                        virtual ~CDataStorage   ();
                        IC  void    init    ();
                    };
                };

              ругается:
              Скрытый текст
              1>f:\xray2013\xr_src\xr_3da\xrgame\builder_allocator_constructor.h(17): error C2143: синтаксическая ошибка: отсутствие "," перед "<"
              1> f:\xray2013\xr_src\xr_3da\xrgame\builder_allocator_constructor.h(34): см. ссылку на создание экземпляров класса шаблон при компиляции "CBuilderAllocatorConstructor<_path_builder,_vertex_allocator>::CDataStorage<_vertex>"
              1> f:\xray2013\xr_src\xr_3da\xrgame\builder_allocator_constructor.h(35): см. ссылку на создание экземпляров класса шаблон при компиляции "CBuilderAllocatorConstructor<_path_builder,_vertex_allocator>"
              1>f:\xray2013\xr_src\xr_3da\xrgame\builder_allocator_constructor.h(18): error C2518: недопустимое зарезервированное слово "typename" в списке базовых классов; пропуск
              1>f:\xray2013\xr_src\xr_3da\xrgame\builder_allocator_constructor.h(21): error C2059: синтаксическая ошибка: <
              1>f:\xray2013\xr_src\xr_3da\xrgame\builder_allocator_constructor.h(21): error C2238: непредвиденные лексемы перед ";"
              1>f:\xray2013\xr_src\xr_3da\xrgame\builder_allocator_constructor.h(22): error C2059: синтаксическая ошибка: <
              1>f:\xray2013\xr_src\xr_3da\xrgame\builder_allocator_constructor.h(26): error C2238: непредвиденные лексемы перед ";"
              1>f:\xray2013\xr_src\xr_3da\xrgame\builder_allocator_constructor.h(27): error C2653: CDataStorageBase: не является именем класса или пространства имен
              1>f:\xray2013\xr_src\xr_3da\xrgame\builder_allocator_constructor.h(27): error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "CGraphVertex"
              1>f:\xray2013\xr_src\xr_3da\xrgame\builder_allocator_constructor.h(27): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
              1>f:\xray2013\xr_src\xr_3da\xrgame\builder_allocator_constructor.h(27): error C2868: CBuilderAllocatorConstructor<_path_builder,_vertex_allocator>::CDataStorage<_vertex>::CGraphVertex: недопустимый синтаксис для "using"-объявления; требуется полное имя
              1>f:\xray2013\xr_src\xr_3da\xrgame\builder_allocator_constructor.h(28): error C2825: CBuilderAllocatorConstructor<_path_builder,_vertex_allocator>::CDataStorage<_vertex>::CGraphVertex: должен представлять класс или пространство имен с последующим "::"
              1>f:\xray2013\xr_src\xr_3da\xrgame\builder_allocator_constructor.h(28): error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "_index_type"
              1>f:\xray2013\xr_src\xr_3da\xrgame\builder_allocator_constructor.h(28): error C2868: CBuilderAllocatorConstructor<_path_builder,_vertex_allocator>::CDataStorage<_vertex>::_index_type: недопустимый синтаксис для "using"-объявления; требуется полное имя

              Что можете подсказать ?
                не нравится студии этот хлам:
                ExpandedWrap disabled
                       typedef typename _vertex_allocator::CDataStorage<
                              typename _path_builder::CDataStorage<
                                  _vertex
                              >::CGraphVertex
                          >   CDataStorageAllocator;

                мб попробовать написать в одну строку? :huh:
                  Цитата simsergey @
                  мб попробовать написать в одну строку?

                  Не помогло...
                    проект в студию! :D
                      Цитата Cfon @
                      проект в студию!

                      качай...
                      Сообщение отредактировано: AndreySol -
                        Цитата AndreySol @
                        Что можете подсказать ?

                        Да то же самое, в принципе. Поставить template перед CDataStorage.
                          Цитата Kray74 @
                          Поставить template перед CDataStorage.

                          Хмм... Мне тут на Gameinator в разделе радактирования движка посоветовали: "... template перед шаблонами и nan закомментируй."
                          Вот теперь думать, что правильнее будет...
                            AndreySol, попробуй и узнаешь :)
                              Цитата AndreySol @
                              Цитата Cfon @
                              проект в студию!

                              качай...

                              А пароль ?
                                Цитата ЫукпШ @
                                А пароль ?

                                смотри здесь, ссылка отсюда взята:
                                http://stalkerin.gameru.net/wiki/index.php...%E6%EA%E0_X-Ray
                                Цитата Kray74 @
                                попробуй и узнаешь :)

                                Не вопрос..., вопрос как правильно это сделать ? К примеру тот фрагмент кода, на который ругается компилятор VS2013:
                                ExpandedWrap disabled
                                  #pragma once
                                   
                                  template <typename _path_builder, typename _vertex_allocator>
                                  struct CBuilderAllocatorConstructor {
                                      template <template <typename _T> class _vertex>
                                      class CDataStorage : public _path_builder::CDataStorage<_vertex>, public _vertex_allocator::CDataStorage<typename _path_builder::CDataStorage<_vertex>::CGraphVertex>
                                      {
                                      public:
                                          typedef typename _path_builder::CDataStorage<_vertex> CDataStorageBase;
                                          typedef typename _vertex_allocator::CDataStorage<typename _path_builder::CDataStorage<_vertex>::CGraphVertex> CDataStorageAllocator;
                                          typedef typename CDataStorageBase::CGraphVertex CGraphVertex;
                                          typedef typename CGraphVertex::_index_type  _index_type;
                                   
                                      public:
                                          IC  CDataStorage(const u32 vertex_count);
                                          virtual     ~CDataStorage();
                                          IC  void    init();
                                      };
                                  };

                                вот как в нем правильно эти самые template перед шаблонами закомментировать ???
                                  Кроме скачанного проекта требуется sdk подключить.. все верно сделано?
                                    Цитата AndreySol @
                                    вот как в нем правильно эти самые template перед шаблонами закомментировать ???

                                    зачем? :D
                                      Цитата AndreySol @
                                      вот как в нем правильно эти самые template перед шаблонами закомментировать ???

                                      Рекомендую спросить у гениев
                                      Цитата AndreySol @
                                      на Gameinator
                                      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                      0 пользователей:


                                      Рейтинг@Mail.ru
                                      [ Script execution time: 0,0462 ]   [ 17 queries used ]   [ Generated: 23.04.24, 20:35 GMT ]