メモリアドレスまたはポインタ型をキーと値として使用しようとしていますが、何らかの理由で挿入時にアクセス違反が発生します。
class SomeClass
{
public:
std::map<MyClass*, MyClass*> stlMapPointer;
std::map<size_t, size_t> stlMapAddress;
CMap<MyClass*, MyClass*, MyClass*, MyClass*> mfcMapPointer;
CMap<size_t, size_t, size_t, size_t> mfcMapAddress;
}
SomeOtherClass
{
public:
SomeClass *m_someClassRef;
void SomeOtherClass::some_method(MyClass* ptr, ...);
}
void SomeOtherClass::some_method(MyClass* ptr, ...)
{
MyClass* test = ptr;
size_t address = reinterpret_cast<size_t>(test); // I realize size_t is technically not portable
// PROBLEM STARTS HERE: Every single one of the following insertions will yield an access violation while calling various internal CMap/std::map calls.
m_someClassRef->stlMapPointer.insert(std::pair<MyClass*, MyClass*>(test, test));
m_someClassRef->stlMapPointer.insert(std::pair<size_t, size_t>(address, address));
m_someClassRef->mfcMapPointer.SetAt(test, test);
m_someClassRef->mfcMapAddress.SetAt(address, address);
}
MyClass にはコピー コンストラクターがありませんが、これは関係ないと思いました。それがまったく関連している場合、私はVisual Studio 6にもこだわっています。
なぜこれが起こっているのかについてのアイデアはありますか?
ありがとうございました!