さて、これはハッシュテーブルに関する宿題ですが、これは私が以前のクラスでできたと思っていた単純なことであり、私は髪を引き裂いています。教授の反応が悪いので、ここでやってみようと思いました。
ストックオブジェクトのハッシュテーブルがあります。ストックオブジェクトは次のように作成されます。
stock("IBM", "International Business Machines", 2573, date(date::MAY, 23, 1967))
私のコンストラクターは次のようになります。
stock::stock(char const * const symbol, char const * const name, int sharePrice, date priceDate): m_symbol(NULL), m_name(NULL), sharePrice(sharePrice), dateOfPrice(priceDate)
{
setSymbol(symbol);
setName(name);
}
setSymbolは次のようになります:(setNameは同一です):
void stock::setSymbol(const char* symbol)
{
if (m_symbol)
delete [] m_symbol;
m_symbol = new char[strlen(symbol)+1];
strcpy(m_symbol,symbol);
}
そしてそれはラインに割り当てることを拒否します
m_symbol = new char[strlen(symbol)+1];
std::bad_allocを使用します。名前と記号が宣言されています
char * m_name;
char * m_symbol;
迷っているのは間違いなくstrlen()です。そして、それは毎回起こるわけではないようです。
cout << symbol << strlen(symbol);
IBMを正しく返し、その後クラッシュする