我是c ++的新手,我真的在努力学习简单的工作。当我使用g ++时,我得到上面显示的两种错误之一。我浏览过论坛,并且已经收集到这是一个常见的问题但是当我修复一个答案时,我在使用g ++时遇到了另一个错误。我有兴趣更好地理解这一点。
#ifndef ORDEREDLIST_H_
#define ORDEREDLIST_H_
#include <iostream>
using namespace std;
class Node
{
public:
double item; // data item
Node *next; // pointer to next node
};
class OrderedList
{
// friend operator functions
friend ostream &operator<<(ostream &, const OrderedList &);
friend istream &operator>>(istream &, OrderedList &);
public:
// constructors
OrderedList():_head(NULL),_size(0) {};
OrderedList(const OrderedList &); // copy constructor
// destructor
~OrderedList();
// operator functions
OrderedList operator+(OrderedList&); // merges two OrderedLists
double operator[](int) const; // subscript operator returns rvalue
const OrderedList &operator=(const OrderedList &); // assignment
void insert(double); // inserts an item
bool remove(int); // remove i th item
void pop(); // pop the first item
void tester();
private:
Node *_head;
int _size;
};
#endif /* ORDEREDLIST_H_ */
类函数在这里:(注意我只包含了部分代码)
#include <iostream>
#include "OrderedList.h"
using namespace std;
OrderedList::OrderedList():_head(NULL),_size(0) {};
//OrderedList::OrderedList(const OrderedList &); // copy constructor
OrderedList::~OrderedList(){
//nothing
};
void OrderedList::pop()
{
//nothing yet
}
然后对当前无效的pop函数的简单测试调用不起作用。我只是想让下面的代码识别pop()函数,以便我可以继续逐步构建我的程序。
#include <iostream>
#include "OrderedList.h"
using namespace std;
int main()
{
OrderedList* List_A = new OrderedList;
cout<<"Hello"<<endl;
List_A->pop();
return 0;
};
我得到的确切错误是:
在函数main':
ass2q1.cpp:(.text+0x46): undefined reference to
OrderedList :: pop()'
collect2:错误:ld返回1退出状态
答案 0 :(得分:0)
您需要编译(并编译仅)两个.cpp
文件,然后将所有内容链接在一起:
# compile source files to object files
g++ -std=c++11 OrderedList.cpp -c -o OrderedList.o
g++ -std=c++11 ass2q1.cpp -c -o ass2q1.o
# link the object files to an executable
g++ ass2q1.o OrderedList.o -o ass2q1
(当然这只是一个(常见)选项)