HLFX.Ru Forum
Показать все 4 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- Ошибка компиляции (https://hlfx.ru/forum/showthread.php?threadid=1283)


Отправлено Ku2zoff 12-05-2008 в 20:39:

Question Ошибка компиляции

У меня возникла проблема при компиляции. Компилирую исходники Parabot c помощью MS Visual Studio .NET 2003 и компилятор пишет:

code:
d:\Games\HLSDK_Full/parabot-source\utils\dynpq.h(58) : error C2440: 'initializing' : cannot convert from 'std::vector<_Ty>::iterator' to 'float *' with [ _Ty=float ] No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include/xstring(1494) : while compiling class-template member function 'dynamic_priority_queue<key_type>::dynamic_priority_queue(std::vector<_Ty> &)' with [ key_type=float, _Ty=float ] d:\Games\HLSDK_Full/parabot-source\bot\pb_mapgraph.cpp(325) : see reference to class template instantiation 'dynamic_priority_queue<key_type>' being compiled with [ key_type=float ] d:\Games\HLSDK_Full/parabot-source\utils\dynpq.h(58) : error C2439: 'dynamic_priority_queue<key_type>::first' : member could not be initialized with [ key_type=float ] d:\Games\HLSDK_Full/parabot-source\utils\dynpq.h(46) : see declaration of 'dynamic_priority_queue<key_type>::first' with [ key_type=float ] Generating Code...

Вот участок кода, на который жалуется компилятор:
C++ Source Code:
1
dynamic_priority_queue<key_type>::dynamic_priority_queue(vector<key_type>& v)
2
: Indices(v.size()), c(v.size()), [color=red]first(v.begin())[/color], csize(v.size())
3
{
4
  index_type i;
5
 
6
 
7
  // store pointers and generate heap
8
  for(i = 0; i< csize; i++)
9
    c[i] = &v[i];
10
  std::make_heap(c.begin(), c.end(), comp);        // STL
11
 
12
  // construct index array
13
  for(i = 0; i< csize; i++)
14
    Indices[c[i] - first] = i;
15
}

Красным выделено то, в чём собственно причина(если это вырезать, то всё нормально, но класс dynamic_priority_queue не работает - халфа вылетает в винду без каких-либо ошибок)

Что нужно сделать в этой ситуации, чтобы компиляция прошла нормально? Строчка No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
Наталкивает меня на мысль, что тут нужно либо какое-то #pragma warning( disable : код_ошибки ) либо конвертирование first(v.begin()). Поскольку я не опытный кодер и тем более не программист, я прошу помощи.


Отправлено Дядя Миша 13-05-2008 в 06:52:

Экая мерзость на STL. А более других исходников паработа нету?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 13-05-2008 в 15:39:

Дядя Миша перерыл весь инет, нормальных не нашёл, только метамодовские.
А можно ли сделать что-нить в этой ситуации? Может дело в висуал студио и нужна версия 6.0? Хотя конечно я её нигде сейчас не найду.


Отправлено Дядя Миша 13-05-2008 в 16:07:

Ku2zoff этож у тебя NET студия, а исходники - на С++.
Попробуй, к примеру 2005-ю студию, ну или 2003-ю.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Временная зона GMT. Текущее время 19:43.
Показать все 4 сообщений этой темы на одной странице

На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024