Hi,
ich habe ein Problem, an dem ich nun schon mehrere Stunden sitze.
Ich habe eine doppelt verkettete Liste und einen Testtreiber:
mein Kopierkonstruktor sieht so aus
Allerdings schiesst er mich immer bei der Zeile
raus und ich verstehe einfach nicht, wieso.
Kann mir da jemand helfen?
Vielen Dank schonmal für eure Bemühungen.
ich habe ein Problem, an dem ich nun schon mehrere Stunden sitze.
Ich habe eine doppelt verkettete Liste und einen Testtreiber:
Code:
bool equal(Clist const& a, Clist const& b) {
if (a.size_ != b.size_) return false;
if (!a.size_) return true;
// Verzeigerung überprüfen
assert (a.head_ && a.tail_ && b.head_ && b.tail_);
assert(!a.head_->prev_ && !a.tail_->next_);
assert(!b.head_->prev_ && !b.tail_->next_);
for (ClistElem *p(a.head_), *q(b.head_); p && q; p=p->next_, q=q->next_) {
if (p->next_) assert(p->next_->prev_ == p);
mein Kopierkonstruktor sieht so aus
Code:
Clist::Clist(Clist const &list): head_(0),tail_(0), size_(0)
{
if(list.empty())
return;
ClistElem *plist = list.head_;
ClistElem *pnew = new ClistElem; // Neues Element
pnew->value_ = plist->value_;
head_ = plist;
while(plist->next_ != 0)
{
plist = plist->next_;
pnew->next_ = new ClistElem;
pnew = pnew->next_;
pnew->value_ = plist->value_; // Strings kopieren
}
pnew->next_ = 0;
}
Allerdings schiesst er mich immer bei der Zeile
Code:
bool<unnamed>::equal(const Clist&, const Clist&): Assertion `p->next_->prev_ == p' failed
Kann mir da jemand helfen?
Vielen Dank schonmal für eure Bemühungen.