pechkin: (Default)
pechkin ([personal profile] pechkin) wrote2004-10-13 11:07 am

(no subject)

Еще смешнее:

zzz.h:

...
	std::map
[Error: Irreparable invalid markup ('<const [...] const,>') in entry. Owner must fix manually. Raw contents below.]

Еще смешнее:

zzz.h:

<pre>...
std::map<const TdxDBTreeListColumn* const, double> Summaries;
...</pre>

zzz.cpp:

<pre>
bool inline __fastcall TfrmMasterMarketProRata::ColumnsSumTo100() const
{
std::map<const TdxDBTreeListColumn* const, double> S;
S[grdProrataMarkets->Columns[0]] = 0;

Summaries[grdProrataMarkets->Columns[0]] = 0;
...</pre>

Первая строчка без проблем, вторая -- с проблемой:

[C++ Error] MasterMarketProRataWnd.cpp(150): E2094 'operator+' not implemented in type 'map<const TdxDBTreeListColumn * const,double,less<const TdxDBTreeListColumn * const>,allocator<pair<const TdxDBTreeListColumn * const,double> > >' for arguments of type 'TdxDBTreeListColumn *'

[identity profile] bigturtle.livejournal.com 2004-10-13 07:20 pm (UTC)(link)
1) Закомментируй "проблемную" строчку, чтобы проверить, что вся беда именно в ней.
2) Проверь препроцессинг "cl /E zzz.cpp".

[identity profile] pechkin.livejournal.com 2004-10-14 12:26 am (UTC)(link)
Беда была именно в ней. Опции компилятора мне менять запрещено, полномочия не те.

Разобрался.

Проблема была в том, что суммы по столбцам у меня доставались по индексу столбца, а столбцы, как оказалось, должны мочь меняться местами и, соответственно, индексами. Самое логичное -- создать мап и картировать сумму по пойнтеру на объект столбца. Но это не получается. По двум причинам -- во первых, не компилируется, во-вторых, оказалось, что не достается по пойнтеру, что-то там как-то не так.

Решилось по-другому: обнаружился евент OnColumnMove(int откуда, int куда). Полдня мучений и три строчки кода.

[identity profile] bigturtle.livejournal.com 2004-10-14 09:24 am (UTC)(link)
Опции компилятора мне менять запрещено, полномочия не те.

Я имел в виду просто запиустить и проверить что выходит после препроцессора. В самом проэкте ничего менять не надо конечно. Нет ли там какого-то #define Suumeries или чего-то совсем уж не того.

В случаях типа твоего вообще-то лучше всего образовать derived class и класть сумму туда. Или это тоже не разрешено? Кто у вас занят дизайном? Он вменяем?