代码之家  ›  专栏  ›  技术社区  ›  SuperKogito

如何正确编写指针函数声明?

  •  0
  • SuperKogito  · 技术社区  · 6 年前

    以下是我的代码,它导致以下错误:

    错误:“Node::Node”指定构造函数,而不是类型

    #include <iostream>
    
    using namespace std;
    class Node {
      public:
          int value;
          Node *right;
          Node *left;
    
          Node* find (int key);
    };
    
    Node::Node* find (int key)
    {
        if (value == key)              { return this;}
        else if (value > key && right) { right->find(key); }
        else if (value < key && left)  { left->find(key); }
        else                           { return NULL;}
    }
    
    int main()
    {
        Node *head  = new Node();
        Node *right = new Node ();
        Node *left  = new Node ();
        head->value  = 5;
        right->value = 3;
        left->value  = 9;
    
        head->right  = right;
        head->left   = left;
    
        Node *mm;
    
        mm = head->find(8);
        cout << mm->value <<endl;}
    
        return 0;
    }
    
    3 回复  |  直到 6 年前
        1
  •  1
  •   Angew is no longer proud of SO    6 年前

    名字 Node 在全局范围内,因此不需要任何限定。成员函数的名称 find 在类的范围内 节点

    Node* Node::find(int key) {
      //...
    }
    
        2
  •  1
  •   Sharath    6 年前

    函数定义应该是这样的。

    Node* Node::find(int key)
    
        3
  •  1
  •   Ajay    6 年前

    这个问题并不是关于函数指针或其他相关的东西。只是“如何在类之外实现方法?”。

    ReturnType CLASSNAME::METHODNAME(Any Parameters)

    因此,要使方法不返回:

    void Node::test(){}
    

    int Node::test(){}
    

    返回指针:

    int* Node::test(){}
    

    Node :

    Node Node::test(){}
    

    返回指向 节点 :

    Node* Node::test(){}