[英]c++ debug assertion failed
我嘗試運行此代碼時遇到問題
void MyClass::setUp(){
list->clear();
Iterator i = ctr.getAll().iterator();
while (i.valid()) {
list->addItem(QString::fromStdString(i.elem().getNr()));
i.next();
}
}
當我退出函數時,會發生錯誤:
調試斷言失敗!
文件:C:\\ Program Files \\ Microsoft Visual Studio 14.0 \\ VC \\ include \\ xmemory0行:106
表達式:“(_Ptr_user&(_ BIG_ALLOCATION_ALIGNMENT -1))== 0” && 0
我正在嘗試遍歷自定義列表
Iterator類是這樣的:
void Iterator::first(){
while (pos < ht.nrElem && ht.list[pos] == nullptr)
pos++;
if (pos < ht.nrElem)
current = ht.list[pos];
}
Iterator::Iterator(const HashTable & ht): ht { ht }{
pos = 0;
first(); // current will refer the first element of the list
}
void Iterator::next(){
current = current->getNext();
if (current == nullptr) {
pos++;
first();
}
}
bool Iterator::valid(){
return (pos < ht.nrElem) && (current != nullptr);
}
Car& Iterator::elem() const{
return current->getCar();
}
一方面, Iterator::first
,因此構造函數不必初始化current
。 其次,在Iterator::Iterator(const HashTable & ht): ht { ht }
是否表示Iterator具有成員ht
,並且該參數也稱為ht
? 這是一個壞習慣。 永遠不要調用與類字段同名的成員函數參數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.