C++ 链接器命令失败,退出代码为1(使用-v查看调用)

C++ 链接器命令失败,退出代码为1(使用-v查看调用),c++,xcode,doubly-linked-list,C++,Xcode,Doubly Linked List,我最近生成的代码包含以下消息: 叮当声:错误:链接器命令失败,退出代码为1(使用-v查看调用) 在我完成整个项目之后 我试过: 清理构建和构建 我已将项目文件保存为工作区文件并运行了该文件 在构建设置中没有metaDataLevel,因此我不能将其标记为None Node.h template<class dataType> class Node { private: dataType data; Node* next; Node* prev; publi

我最近生成的代码包含以下消息:

叮当声:错误:链接器命令失败,退出代码为1(使用-v查看调用)

在我完成整个项目之后

我试过:

  • 清理构建和构建
  • 我已将项目文件保存为工作区文件并运行了该文件
  • 在构建设置中没有metaDataLevel,因此我不能将其标记为None
Node.h

template<class dataType>
class Node {
private:
    dataType data;
    Node* next;
    Node* prev;
public:
    Node();
    Node(dataType);

    bool setNext(Node*);
    bool setPrev(Node*);
    Node* getNext() const;
    Node* getPrev() const;
    void setData(const dataType&);
    dataType getData() const;
    bool add(const dataType);
    bool remove(const dataType);

    ~Node();
};

template<class dataType>
Node<dataType>::Node()
{
    next = nullptr;
    prev = nullptr;
}

你试过了吗?几乎总是有比所提供的更多的错误信息。找到它,它甚至可以告诉你需要做什么。如果没有,请将其添加到问题中。请使用
节点
类的完整声明编辑您的帖子。源文件说它是一个模板类,但您的代码片段可能会显示其他内容。@胡桃夹子还没有,我会尽快找到它。@ThomasMatthews我很抱歉,因为我对编码还比较陌生。你说的片段是什么意思?我发现问题在于我无法在主程序中使用模板类。所以,我现在正在寻找一种方法,允许我在主模板中使用。谢谢你!!
template<class dataType>
Node<dataType>::Node(dataType d)
{
    data = d;
    next = nullptr;
    prev = nullptr;
}

template<class dataType>
bool Node<dataType>::setNext(Node* head)
{
    this->next = head;
    return true;
}

template<class dataType>
bool Node<dataType>::setPrev(Node* head)
{
    this->prev = head;
    return true;
}    

template<class dataType>
Node<dataType>* Node<dataType>::getNext() const
{
    return next;
}

template<class dataType>
Node<dataType>* Node<dataType>::getPrev() const
{
    return prev;
}

template<class dataType>
void Node<dataType>::setData(const dataType& d){
    this->data = d;
}

template<class dataType>
dataType Node<dataType>::getData() const
{
    return data;
}

template<class dataType>
bool Node<dataType>::add(const dataType d){
    Node* dummy = new Node(d);
    dummy->setNext(this);
    this->setPrev(dummy);
    dummy->setPrev(nullptr);
    this = dummy;
    return true;
}

template<class dataType>
bool Node<dataType>::remove(const dataType d){
    Node* pointer = this;
    while(pointer != nullptr)
    {
        if(pointer->getData() == d)
        {
            if(pointer->getPrev() == nullptr)
            {
                this = pointer->getNext();
                pointer = pointer->getNext();
                delete pointer->getPrev();
                pointer->setPrev(nullptr);
            }
            else if(pointer->getNext() == nullptr)
            {
                pointer->getPrev()->setNext(nullptr);
                delete pointer;
                pointer = nullptr;
            }
            else
            {
                pointer->getPrev()->setNext(pointer->getNext());
                pointer->getNext()->setPrev(pointer->getPrev());
                Node* dummy = pointer;
                pointer = pointer->getNext();
                delete dummy;
            }
        }
    }
    return true;
}

template<class dataType>
Node<dataType>::~Node(){
    Node* pointer = this;
    Node* holder = this->getNext();
    while (holder != nullptr)
    {
        delete pointer;
        pointer = holder;
        holder = holder->getNext();
    }
    delete pointer;
    delete holder;
}
int main(){
    int v = 10;
    string d = "X";
    Node<int>* headInt = new Node<int>(v);
    Node<string>* headString = new Node<string>();
    headString->setData(d);
    cout << "headInt contain" << headInt->getData() << ", ";
    cout << "headString contain" << headString->getData() << endl <<     endl;

    headInt->add(22);
    headString->add("XXII");
    cout << "headInt contain" << headInt->getData() << ", ";
    cout << "headString contain" << headString->getData() << endl << endl;

    headInt->remove(22);
    headString->remove("XXII");
    cout << "headInt contain" << headInt->getData() << ", ";
    cout << "headString contain" << headString->getData() << endl << endl;
}
headInt contain 10,
headString contain X

headInt contain 22,
headString contain XXII

headInt contain 10,
headString contain X