将指针作为私有数据成员传递到Main中的成员函数

时间:2017-01-28 03:48:13

标签: c++ pointers

我正在为学校解决一个问题,我在那里总结存储在线性链表中的值。

我有一个定义节点的结构。它有一个数据部分和下一个指针。

我有一个类,它具有在公共部分列表中工作的函数,以及私有部分中名为head的指针。

我在我的实现文件中实现了一个递归函数来求和值。  它需要node*作为参数。

我的问题是,如果它是私有数据成员,如何将head指针传递给main()中的函数?

我已经成功地迭代实现了这个,所以请假设列表在main()中成功实例化。我只是无法弄清楚如何从那里将指针传递给我的函数。

1 个答案:

答案 0 :(得分:1)

你没有把它传入。该类已经拥有它。如果我的课你应该看起来像这样:

class Foo {
    node* _head;
    node* _tail;
public:
    Foo() : _head(nullptr), _tail(nullptr) {}
    ~Foo() {
        while(_head != nullptr) {
            node* temp = _head;

            _head = _head->next;
            delete temp;
        }
    }
    void insert(const int arg) {
         if(_head = _nullptr) {
             _head = new node(arg);
             _tail = _head;
         } else {
             _tail->next = new node(arg);
             _tail = _tail->next;
         }
    }
    int sum() const {
        int total = 0;

        for(auto i = _head; i != nullptr; i = i->next) {
            total += i->val;
        }

        return total;
    }
};

请注意,sum无需将_head传递给它,因为_head实际上已经是sum方法的对象的成员。