带参数的构造函数

时间:2014-08-04 13:17:50

标签: constructor default

  • 具有整数参数的构造函数(构造仅包含该整数的SDL。
  • 默认构造函数(构造空SDL)

我这样写了这些;

doublylinkedlist::doublylinkedlist(){
head=NULL;
tail=NULL;
}

//***********************************************************************************************
//A constructor with an integer parameter (constructs an SDL containing that integer only).     *
//***********************************************************************************************
doublylinkedlist::doublylinkedlist(int number){

    head->num =number;
    tail=head;
}

但是有一个关于未处理的异常访问违规写入位置的错误窗口

head->num=number;

线。问题出在哪儿 ?如果你想看一下,这也是我的头文件:

#include <iostream>
#ifndef _HW3_H
#define _HW3_H

using namespace std;

struct node
{
    int num;
    node * left;
    node * right;

    node::node(){}
    node::node(const int &integer, node *pointer, node *ptr):num(integer),left(pointer),right(ptr){}
};

class doublylinkedlist
{
private:
    node *head;
    node *tail;
    int size;

public:
    doublylinkedlist();
    doublylinkedlist(int);
    doublylinkedlist(const doublylinkedlist &);
    ~doublylinkedlist();
    node* clone() const;
    node *remove() const;
    node *mergedlists(const doublylinkedlist &);

    const doublylinkedlist & operator+(const doublylinkedlist &);
    const doublylinkedlist & operator=(const doublylinkedlist &);

};

#endif

1 个答案:

答案 0 :(得分:1)

您需要首先使用指向节点对象的指针初始化头指针:

doublylinkedlist::doublylinkedlist(int number)
:   head(new node())
{
    head->num =number;
    tail=head;
}

错误发生了,因为没有节点对象&#34;背后&#34;指针