std のものと同様のカスタム マップ クラスを実装していますが、1 つの問題があります。
map<string, SomeObject*> container;
SomeObject* object = container["this doesn't exist"];
デバッガーオブジェクトでは0x0000000であるため、マップからの無効な値は常に null です。しかし、私のマップでは、無効な値は初期化されていないポインターのようなものです - 0xcdcdcdcdのような無効な値がありますが、リリースモードでは別のものなので、チェックすることはできません為に
if(object == 0xcdcdcdcd)
だから私はこれを行うことができるようにしたいと思います:
MyMap<string, SomeObject*> container;
SomeObject* object = container["this doesn't exist"]; //and for this to definetely be nullptr
だから私はそれをすることができます
if(object == nullptr)
DoSomething();
bool ContainsKey(KeyType key); があります。マップの初期化時に必要なものを確保する方法はありますか、またはPointerWrapper でnullptrに設定されたSomeObjectのポインターを含むカスタムPointerWrapperを作成する必要がありますか? std ヘッダーには膨大な量のマクロと typedef が含まれているため、何が起こっているのかを理解するのに苦労しました。