3 つのデータ型を保持する次のクラスがあります。
class CentralBank{
MaxHeap richestBanks;
HashTable banks;
AccountTree accounts;
public:
CentralBank(int numAccounts, Account* accounts, int numBanks, Bank* bankArr);
void AddAccount(Account account);
void RemoveAccount(int accountID);
void AddBank(Bank bank);
int GetAccountsNumber(int bankID);
void GetKRichestBanks(unsigned int K, Bank* banks);
int GetSumBalance (int low, int high);
};
コンストラクタは次のとおりです。
CentralBank::CentralBank(int numAccounts, Account* accounts, int numBanks,
Bank* bankArr): accounts(numAccounts,accounts){
int** locs = new int*[numBanks];
richestBanks = MaxHeap(numBanks,bankArr, locs);
banks = HashTable(numBanks,bankArr,locs);
delete[] locs;
}
私の問題は、ヒープとハッシュ テーブルのデストラクタがコンストラクタの直後に呼び出されることです。両方をポインターにすると、それは起こりません。なぜこれが起こるのですか?それらがポインタではなく、初期化の直後にデストラクタが呼び出されないようにする方法はありますか? それらを正しく初期化していませんか?
PS: コンストラクターには初期化が必要な「locs」パラメーターが必要なため、初期化リストには含まれていません。