Hi,
I'm relatively new to C++ ad i'm trying to make a winhttp wrapper class. The problem is that I have to put a reference back from inside a function. But then the pointer goes out of scope because you can't destroy it:
Code:
int WINAPI WinMain(HINSTANCE inst,HINSTANCE prev,LPSTR cmd,int show)
{
HTTPReq* tst = new HTTPReq();
HTTPReq::REQUEST_CONTEXT* context=tst->Connect(L"arevico.com",80,L"Firefox",true);
tst->SendRequest(context,L"ahe",L"referer",L"?page=1");
// here i want to be able to pass context (so actually a item in the list defined in the class
Sleep(10000);
delete tst;
return 0;
}
And the snipper from the class:
Code:
list<REQUEST_CONTEXT> requestcontexes; //
CRITICAL_SECTION cs;
HINTERNET hSession;
REQUEST_CONTEXT* Connect(LPCWSTR servername,unsigned int port,LPCWSTR useragent,bool async=false){
REQUEST_CONTEXT cpContext;
EnterCriticalSection(&cs);
requestcontexes.push_front(cpContext);
REQUEST_CONTEXT* refContext=&requestcontexes.front(); //locally declared pointer should be destroyed later
hSession= WinHttpOpen(useragent,WINHTTP_ACCESS_TYPE_NO_PROXY,NULL,NULL,async ? WINHTTP_FLAG_ASYNC : NULL);
refContext->hConnect=WinHttpConnect(hSession,servername,port,0);
//delete refContext; //you cant do this here
LeaveCriticalSection(&cs);
return refContext;
}
What is the best way in C++ standards to do this?