Pair 要素へのポインターへのポインターの動的配列が必要です。
int m_size = 0;
Pair** ar = new Pair*[++m_size];
*ar[0] = Pair(key, data);
ここで私は得る: lab3.exe の 0x013729db で未処理の例外: 0xC0000005: アクセス違反書き込み場所 0xcdcdcdcd.
これは、MyString のオーバーロードされた演算子で発生しました (例外がスローされたときの HERE マーク):
MyString & MyString::operator = (const MyString & refMyString){
HERE: this->m_pStr = refMyString.m_pStr;
return *this;
}
私のクラス(私たちの目的のために少し単純化されています):
class Pair{
MyString m_key;
Data* m_data;
}
class MyString
{
char* m_pStr;
}
そして、ここに私がデバッガーで得たものがあります:
さて、私が見る限り、Pair** ar = new Pair*[++m_size] を実行すると、Pair インスタンスのスペースへのポインターへの新しいポインターが作成されました。しかし、それはメモリ内の単なるスペースです。そして、操作しようとすると失敗します。
そして、何をするかは私にとって謎です。私たちを手伝ってくれますか?