Bra_Hancock 2017-05-02 08:40 采纳率: 0%
浏览 1966
已采纳

C++ 成员变量作同一个类的成员函数参数 逻辑有什么问题

下面是创建链表的部分代码。
为了在析构函数中delete所有new出来的节点,我在链表的成员中加了个变量来保存链表的头(因为析构是无法带参数的啊)。
然后在DeleteAllNodes()的参数报错了,“a nonstatic member reference must be relative to a specific object”。
我觉得按照运行顺序,在调用DeleteAllNodes()之前,headNode已经指向了一个正确的值,不知道哪有问题。

class Node
{
public:
    int data;
    Node *next;
    Node();
    //Node(int values);
    //~Node();
};

Node::Node()
{
    data = 0;
    next = NULL;
}

class MyList
{
public:
    int ListSize;
    Node *headNode;
    MyList();
    void DeleteAllNodes(Node *headnode);
    ~MyList();
};

MyList::MyList()
{
    ListSize = 0;
    headNode = NULL;
}

void MyList::DeleteAllNodes(Node *headNode2 = MyList::headNode)
{
    if (headNode2 == NULL)
    {
        return;
    }
    Node *nextNode;
    while (true)
    {
        nextNode = headNode2->next;
        delete headNode2;
        headNode2 = nextNode;
        if (headNode2 == NULL)
        {
            break;
        }
    }
}

MyList::~MyList()
{
    DeleteAllNodes();
}

(没有C币了见谅)

  • 写回答

2条回答 默认 最新

  • 关注

    DeleteAllNodes(Node *headNode2 = MyList::headNode)
    为什么要这么写参数?MyList::headNode相当于获取headNode在MyList类中的偏移量,很多编程器不支持你这样的错误逻辑写法。

     void MyList::DeleteAllNodes()
    {
        Node *headNode2 = this->headNode;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥17 pro*C预编译“闪回查询”报错SCN不能识别
  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?