未定义的对/的引用无法解析重载函数的地址
undefined reference to / cannot resolve address of overloaded function
我是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退出状态
您需要编译(并且仅编译)两个.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
(当然,这只是一个(常见)选项)
相关文章:
- 重载运算符有地址吗?
- 重载 ostream << 运算符,指针作为参数,导致输出上的内存地址
- 重载函数的地址与所需类型不匹配
- 重载新返回错误的地址
- C++ - <<运算符重载,链表 - 地址而不是标准输出
- 错误:语句无法解析重载函数C++的地址
- 间接寻址运算符如何返回带有运算符重载的指针地址
- 重载运算符地址的用例
- 仅通过参数查找重载地址
- 推导模板类重载方法的地址会导致"error: expected primary-expression before ‘decltype’"
- 获取重载函数模板的地址
- C++重载运算符<<输出地址
- 在映射中插入地址时,新运算符重载会导致无限递归
- C++错误:语句无法解析重载函数的地址
- 编译器告诉我它无法解析重载函数的地址.对于 switch() 语句,这意味着什么
- 查找其 & 运算符重载且私有的对象的地址
- 匹配布尔值与常量 void* 重载的函数地址
- 使用指针数组中的对象调用重载的友元 ostream 插入运算符将返回内存地址
- 语句无法解析重载函数的地址
- 运算符打印地址<<重载