我正在尝试将<< operator
重载为&#34; insert_first
运算符&#34; 以获取双链表。这应该是一个简单的过程,我之前已经重载了运算符,但我坚持这个。我试图将其重载为:
DLList & DLList::operator << (const int value )
{
insert_first(value);
}
我的.h
文件似乎很好,与其他在线文件类似:
#ifndef DLLIST_H
#define DLLISH_H
#include <stdio.h>
#include <iostream>
class ListNode {
public:
int value;
ListNode * next;
ListNode * prev;
static int node_count;
ListNode() {
node_count++;
}
~ListNode() {
node_count--;
}
static void print_node_count() {
std::cout << "Node Count: " << node_count << std::endl;
}
};
class DLList {
private:
ListNode * head;
public:
DLList();
~DLList();
void print_list();
void print_list( std::string list_name );
void insert_first( int value );
bool remove( int value );
void concat_list( DLList * list_to_add );
DLList & operator << (const int value );
};
我的insert_first
函数似乎也运行良好:
void DLList::insert_first( int value )
{
ListNode * n = new ListNode();
n->value = value;
n->next = head->next;
n->prev = head;
head->next = n;
n->next->prev = n;
}
我收到的错误是段错误。任何想法或意见将不胜感激。
答案 0 :(得分:1)
好的,正如评论建议的那样,我需要从运营商那里返回一些内容,如
DLList & DLList::operator << (const int value )
{
insert_first(value);
return *this;
}