Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.135.213.214] |
|
Сообщ.
#1
,
|
|
|
Переношу проект созданный в VS2005 на VS2013. На это
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>" В чем проблема, как исправить ? |
Сообщ.
#2
,
|
|
|
allocator как объявлен?
|
Сообщ.
#3
,
|
|
|
Вроде это ?
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. Пока в нем не ориентируюсь, прошу сильно не пинать. |
Сообщ.
#4
,
|
|
|
ну все ясно!
|
Сообщ.
#5
,
|
|
|
В pollSS нет ничего с именем helper, значит allocator это что-то другое.
А вообще, пальцем в небо, попробуйте так: IC void getLR (TNode* N, xr_vector<T,typename allocator::template helper<T>::result>& D) |
Сообщ.
#6
,
|
|
|
Kray74,пальцем в небо вроде помогло... теперь следующий вопрос:
на это: Скрытый текст #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"-объявления; требуется полное имя Что можете подсказать ? |
Сообщ.
#7
,
|
|
|
не нравится студии этот хлам:
typedef typename _vertex_allocator::CDataStorage< typename _path_builder::CDataStorage< _vertex >::CGraphVertex > CDataStorageAllocator; мб попробовать написать в одну строку? |
Сообщ.
#8
,
|
|
|
Цитата simsergey @ мб попробовать написать в одну строку? Не помогло... |
Сообщ.
#9
,
|
|
|
проект в студию!
|
Сообщ.
#11
,
|
|
|
Цитата AndreySol @ Что можете подсказать ? Да то же самое, в принципе. Поставить template перед CDataStorage. |
Сообщ.
#12
,
|
|
|
Цитата Kray74 @ Поставить template перед CDataStorage. Хмм... Мне тут на Gameinator в разделе радактирования движка посоветовали: "... template перед шаблонами и nan закомментируй." Вот теперь думать, что правильнее будет... |
Сообщ.
#13
,
|
|
|
AndreySol, попробуй и узнаешь
|
Сообщ.
#15
,
|
|
|
Цитата ЫукпШ @ А пароль ? смотри здесь, ссылка отсюда взята: http://stalkerin.gameru.net/wiki/index.php...%E6%EA%E0_X-Ray Цитата Kray74 @ попробуй и узнаешь Не вопрос..., вопрос как правильно это сделать ? К примеру тот фрагмент кода, на который ругается компилятор VS2013: #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 перед шаблонами закомментировать ??? |
Сообщ.
#16
,
|
|
|
Кроме скачанного проекта требуется sdk подключить.. все верно сделано?
|
Сообщ.
#17
,
|
|
|
Цитата AndreySol @ вот как в нем правильно эти самые template перед шаблонами закомментировать ??? зачем? |
Сообщ.
#18
,
|
|
|
Цитата AndreySol @ вот как в нем правильно эти самые template перед шаблонами закомментировать ??? Рекомендую спросить у гениев Цитата AndreySol @ на Gameinator |