编译器建议 class 的两个候选人

compiler suggests two candidates for class

我正在学习 c++98,但在编译我的节点时出现此错误 class:

Node.cpp:13:1: error: no declaration matches ‘Node::Node(Node::dataType&)’
   13 | Node::Node(dataType& initData){
      | ^~~~
In file included from Node.cpp:7:
node.h:13:7: note: candidates are: ‘Node::Node(const Node&)’
   13 | class Node{
      |       ^~~~
node.h:19:5: note:                 ‘Node::Node(const dataType&)’
   19 |     Node(const dataType&);
      |     ^~~~
node.h:13:7: note: ‘class Node’ defined here
   13 | class Node{
      |       ^~~~

这是我的Node.cpp

#include "node.h"
#include <cstdlib>

using namespace std;


Node::Node(dataType& initData){
  data = initData;
  next = NULL;
  prev = NULL;
}

void Node::setData(dataType& newData){
  data = newData;
}

void Node::setNext(Node* nextLink){
  next = nextLink;
}

void Node::setPrev(Node* prevLink){
  prev = prevLink;
}

dataType Node::getData(){
  return data;
}

Node* Node::getPrev(){
  return prev;
}

Node* Node::getNext(){
  return next;
}

这是我的Node.h

#ifndef TYLER_NODE
#define TYLER_NODE

#include <iostream>
#include <cstdlib>
#include "EToll.h"

class Node{
  public:
    //TYPEDEF
    typedef EToll dataType;

    //CONSTRUCTOR
    Node(const dataType&);


    void setData(const dataType&);
    void setNext(Node*);
    void setPrev(Node*);

    dataType getData() const;
    const Node* getPrev() const;
    Node* getPrev();
    const Node* getNext() const;
    Node* getNext();

  private:
    dataType data;
    Node* next;
    Node* prev;
};
#endif

它应该是一个简单的 class,它包含 EToll 的实例(来自 EToll.h)以供在链表中使用,但我收到此错误。看起来编译器将 Node class 误认为是 Node 构造函数,但我仍在学习,所以我不太确定

这里的混乱源于编译器在报告候选人时彻底。第一个是 implicitly 声明的复制构造函数,它在空间上引用 class 名称,因为它是隐式的。在这里看到这不是很有帮助,因为无论如何你都不能定义一个隐式声明的函数,但是那个检查“你完全匹配任何构造函数吗?”之后,你没有因为 const.