C++ 链接器命令失败,退出代码为1(使用-v查看调用)
我最近生成的代码包含以下消息: 叮当声:错误:链接器命令失败,退出代码为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
- 清理构建和构建
- 我已将项目文件保存为工作区文件并运行了该文件
- 在构建设置中没有metaDataLevel,因此我不能将其标记为None
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