c++ - 即使我编译了所有 cpp 文件,对 Class 的未定义引用
问题描述
首先,我对编码有点陌生,所以我可能只是错过了一些非常明显的东西。我仍然会很感激任何帮助。
我在一个目录中创建了一些头文件和一些代码文件,即“main.cpp”、“elements.cpp”、“queue.cpp”、“elements.hpp”和“queue.hpp”。在“main.cpp”中,我包含了两个 .hpp 文件。
然后我编译:g++ main.cpp elements.cpp queue.cpp
得到一个链接了所有三个 .cpp 文件的可执行文件。我仍然收到以下错误消息/usr/bin/ld: /tmp/ccUjQcqj.o: in function main': main.cpp:(.text+0x33): undefined reference to Queue::Queue()'
。Queue 是在“queue.hpp”中声明的一个类。
这是“queue.hpp”的代码:
#include "elements.hpp"
class Queue{
Element Q[10];
int start;
int count;
void print(bool dir,int count);
public:
Queue(); //Standard Konstruktor Deklaration
void push(Element e);
void pop();
Element& top();
void print(bool dir=true);
int size();
};
这是“queue.cpp”的代码:
#include "elements.hpp"
#include <iostream>
class Queue{
Element Q[10];
int start;
int count;
void print(bool dir,int count){
if(count>0 && dir==0){
Q[count-1].print();
print(dir,count-1);
}
if(count>0 && dir==1){
print(dir,count-1);
Q[count-1].print();
}
}
public:
Queue():start(0),count(0){}
void push(Element e){
if (count==10){
for(int i=0;i<9;i++){
Q[i]=Q[i+1];
}
Q[9]=e;
}
else{Q[start+count]=e;
count++;
}}
void pop(){
for(int i=0;i<9;i++){
Q[i]=Q[i+1];
}
count--;
}
Element& top(){
return Q[0];
}
void print(bool dir=true){
print(dir,count);
}
int size(){
return count;
}
};
我不明白为什么这里有一个未定义的引用,因为我在 main 中包含了“queue.hpp”,并且“queue.cpp”中的构造函数也没有丢失。
谢谢您的帮助!
解决方案
推荐阅读
- javascript - Javascript XML 解析器无法在 Firefox 上运行
- python - 初始化许多空列表(不是副本)的列表
- node.js - 降级节点版本或 npm 版本时 Node JS 出现错误
- angular - 使用 Angular 6 访问子元素并与之交互
- sql-server - “导入平面文件向导”如何在没有 Bulkadmin 的情况下工作
- python - python中plotly库的使用
- javascript - 验证消息不断重印
- couchdb - 没有 _changes 的 CouchDB longpoll
- excel - 在 Excel 上按 id 列的行
- php - 日期未在控制台中显示为字符串