#c
#c
Вопрос:
Я хотел бы знать, как я могу получить доступ к std::list в другом файле?
Мой список в .h
class MobActivity
{
public:
MobActivity(){};
~MobActivity(){};
typedef struct _CreatureData
{
WORD MapID;
bool IsDead;
DWORD KilledTime;
bool isSpawned;
RwUInt32 DisplayID;
} CreatureData;
typedef std::list<CreatureData*> MONSTERLIST;
typedef MONSTERLIST::iterator MONSTERLISTIT;
MONSTERLIST m_monsterList;
};
Теперь я хотел бы получить доступ к этому списку в другом файле с именем b.h
void MobActivity::RunSpawnCheck(CNtlPacket * pPacket, sVECTOR3 curPos)
{
CGameServer * app = (CGameServer*) NtlSfxGetApp();
CreatureData * creaturelist;
for (MONSTERLISTIT it = m_monsterList.begin(); it != m_monsterList.end(); it )
{
creaturelist = (*it);
CNtlPacket packet(sizeof(sGU_OBJECT_CREATE));
sGU_OBJECT_CREATE * res = (sGU_OBJECT_CREATE *)packet.GetPacketData();
res->wOpCode = GU_OBJECT_CREATE;
res->sObjectInfo.objType = OBJTYPE_MOB;
}
}
Есть идеи, как я мог бы это сделать?
Я могу выполнить цикл for следующим образом
for (auto it = app->mob->m_monsterList.begin(); it != app->mob->m_monsterList.end(); it )
но больше я не знаю .. он продолжает говорить, что creaturelist не определен, и это m_monsterList == (*it);
также говорит о его неопределенном
Получилось!
Комментарии:
1. В определении класса
MobActivity
вы должны объявить функцию-член,void RunSpawnCheck(CNtlPacket * pPacket, sVECTOR3 curPos)
.b.h
Вероятно , вместо этого файл должен быть файлом реализацииb.cpp
. В любом случае, в верхней части этого файла#include
a.h
находится файл. Кроме того, если вы еще этого не сделали, поместите a#pragma once
в началоa.h
файла. Обратите внимание, что все прописные буквы воспринимаются многими как кричащие, а также повышают вероятность столкновения имен с макросами.2. Было бы легче найти ответ, если бы вы предоставили полные и компилируемые примеры кода, включая ваши includes . И постарайтесь выбросить как можно больше кода.
3. Также было бы неплохо, если бы вы объяснили свой ответ, чтобы люди, путешествующие таким образом в будущем, могли увидеть, как вы это решили.