首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

找了两天的有关问题,头疼!(小弟我很清楚的注释了代码,很好理解的。)

2012-10-27 
找了两天的问题,头疼!(我很清楚的注释了代码,很好理解的。)C/C++ code//这是电话薄的定义class Addressbook

找了两天的问题,头疼!(我很清楚的注释了代码,很好理解的。)

C/C++ code
//这是电话薄的定义class Addressbook{public:    typedef struct{        std::string name;        std::string tele;    }Data;    typedef struct Node{        Data information;        struct Node *next;    }Node, *List;    Addressbook();    ~Addressbook();    void append(std::istream &in); //添加联系人    void remove(const std::string &name); //删除联系人    void scan(std::ostream &out);  //浏览联系人    private:    List linkmen;};//就是这个成员函数问题运行时错误,求解!void Addressbook::append(std::istream &in){    Node *newlinkman = (Node *)malloc(sizeof(Node));    if(newlinkman == NULL)        exit(EXIT_FAILURE);    //就是下面这两句运行时出错,始终想不明白。。。    in >> (newlinkman->information).name;    in >> (newlinkman->information).tele;    newlinkman->next = NULL;                    //linkmen是类的唯一数据成员且为已经初始化的链表头结点    linkmen->next = newlinkman; }


[解决办法]
既然你在使用C++,那么请使用new而非malloc
前者会调用类的构造函数,后者仅仅分配所需大小的内存空间

Node *newlinkman = (Node *)malloc(sizeof(Node));
在这行代码里,你申请了一个Node所需的内存空间
没有初始化,没有预分配内存(string类自己管理字符串所需内存,sizeof无权对它指手画脚),什么都没有,仅仅只有一个内存空间
然后输入流in被告知要向一个string内输入一个字符串,但它很困惑:为什么我找不到这个string内应有的一些参数,例如当前长度和内存地址?

热点排行