MeNi
*^#%$%
- Joined
- Jul 23, 2008
- Messages
- 183
- Reaction score
- 12
Pisze jeszcze raz w nowym temacie, bo tamten dotyczyl czegos innego, poza tym pytanie zaginelo gdzies w n-tym poscie.
mam taką funkcję w kodzie TFSa (container.cpp), która ma sprawdzać, czy można dodać coś do danego np. BP:
i chcę z jej wnętrza pobrać do zmiennej np. const Container* topParent najwyższy bp/inny container, w którym znajduje się container, do którego dodajemy item, aby potem wywołać getItemHoldingCount() i zliczyć wszystkie przedmioty, które są w całej gałęzi backpacków/innych kontenerów, zaczynając od piewrwszego.
Przykład
BP0: [item,item,BP1,item,item]
BR1: [item,BP2]
BP2: [item,item,BP3]
BP3: [item]
i powiedzmy, że wkładam przedmiot do BP2. Wywoływane jest Container::__queryAdd dla BP2, i jeśli użyję tutaj getItemHoldingCount() to zliczy tylko itemy z BP2 i BP3, dlatego chcę pobrać do zmiennej topParent BP0 i dla niego uruchomić topParent->getItemHoldingCount() żeby zliczyć wszystkie przedmioty (BP0,BP1,BP2,BP3)
Próbowałem w następujący sposób:
ale getTopParent() zwraca Cylinder* (nutaj nie wiem, czym różni się on od Container* i do czego służy, bo w niektórych miejscach w kodzie jest do niego porównywany, wiec jest to coś podobnego do Container* prawdopodobnie)
próbowałem tak:
wtedy mam błąd:
Jakieś pomysły, jak to zrobić?
mam taką funkcję w kodzie TFSa (container.cpp), która ma sprawdzać, czy można dodać coś do danego np. BP:
Code:
ReturnValue Container::__queryAdd(int32_t index, const Thing* thing, uint32_t count, uint32_t flags) const
{
// (...)
}
Przykład
BP0: [item,item,BP1,item,item]
BR1: [item,BP2]
BP2: [item,item,BP3]
BP3: [item]
i powiedzmy, że wkładam przedmiot do BP2. Wywoływane jest Container::__queryAdd dla BP2, i jeśli użyję tutaj getItemHoldingCount() to zliczy tylko itemy z BP2 i BP3, dlatego chcę pobrać do zmiennej topParent BP0 i dla niego uruchomić topParent->getItemHoldingCount() żeby zliczyć wszystkie przedmioty (BP0,BP1,BP2,BP3)
Próbowałem w następujący sposób:
Code:
ReturnValue Container::__queryAdd(int32_t index, const Thing* thing, uint32_t count, uint32_t flags) const
{
(...)
const Cylinder* topParent = getTopParent();
if(topParent->getItemHoldingCount() + addCount > g_config.getNumber(ConfigManager::MAX_ITEM_COUNT))
return RET_THISISIMPOSSIBLE;
}
ale getTopParent() zwraca Cylinder* (nutaj nie wiem, czym różni się on od Container* i do czego służy, bo w niektórych miejscach w kodzie jest do niego porównywany, wiec jest to coś podobnego do Container* prawdopodobnie)
próbowałem tak:
Code:
ReturnValue Container::__queryAdd(int32_t index, const Thing* thing, uint32_t count, uint32_t flags) const
{
(...)
Container* topParent = this;
while (topParent->getParentContainer())
{
topParent = topParent->getParentContainer();
}
if(topParent->getItemHoldingCount() + addCount > g_config.getNumber(ConfigManager::MAX_ITEM_COUNT))
return RET_THISISIMPOSSIBLE;
wtedy mam błąd:
Code:
~source\container.cpp invalid conversion from `const Container* const' to `Container*'
Jakieś pomysły, jak to zrobić?