A: 

NULL is not a Quest* -- it may be being defined as ((void *)0) somewhere, which is not implicitly convertible to Quest*. Use static_cast<Quest*>(0) instead.

Billy ONeal
It's not but it can be converted to one, `Quest *a = NULL` for example.. And I explicitly list the template parameters. Anyways I tried, same error.
Krevan
@Krevan: No, it is possible that it *cannot* be converted to one.
Billy ONeal
@Billy: Isn't `NULL` defined to be `0` in C++?
FredOverflow
@FredOverflow: Normally yes, but it's possible for it to be redefined by a C library expecting `((void *)0)`.
Billy ONeal
@Billy: I see. Looking forward to C++0x's `nullptr` even more :)
FredOverflow
+1  A: 

Does it work with an explicit cast?

if (id)
    Cache.insert(make_pair<int, Quest*>(int(*id), NULL));

Also, a cpp file with 9000 lines, really?

FredOverflow
It's automatically generated, and yes, int() seems to fix it!!
Krevan
@Krevan: Glad I could help.
FredOverflow