首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >c++类中的未定义引用

问c++类中的未定义引用
EN

Stack Overflow用户
提问于 2014-04-10 23:41:10
回答 1查看 759关注 0票数 0

大家好,所以我试图使用两个队列来实现堆栈,但是,我遇到了一个问题,就是没有定义对类my_queue的引用。

错误是(我只包括一些,因为所有这些都是未定义的引用)。

代码语言:javascript
复制
my_stack.cpp:(.text+0x15): undefined reference to `my_queue::my_queue()'
my_stack.cpp:(.text+0x25): undefined reference to `my_queue::my_queue()'
my_stack.cpp:(.text+0x31): undefined reference to `my_queue::my_queue()'
my_stack.cpp:(.text+0x3d): undefined reference to `my_queue::my_queue()'
/tmp/ccNs1Fuy.o: In function `my_stack::push(int)':
 `my_queue::dequeue()'

my_stack的代码如下。另外,对于my_stack类和my_queue类,我有两个头文件,但我假设它们中没有错误。

代码语言:javascript
复制
#include<iostream>
#include<vector>
#include"my_stack.h"
#include"my_queue.h"

my_stack::my_stack(){
    my_queue q1;
    my_queue q2;

}

void my_stack::push(int n){
    q1.enqueue(n);
}

int my_stack::pop(){
    for(int i =0; i<q1.size()-1; i++){
        int temp = q1.dequeue();
        q2.enqueue(temp);
    }//dequeue every element in the q1 except the last element and enqueue to q2
    int x = q1.dequeue();// dequeue the last item of q1


    return x;
}

void my_stack::is_empty(){
    if(q1.size() == 0){
    std::cout<< "the stack is empty"<<'\n';
    }

    else{
    std::cout<< "the stack is not empty"<<'\n';
    }
}

int main(){
    my_stack m;
    m.push(4); 
    m.push(3);
    int yo = m.pop();
    std::cout<<yo<<'\n';
    m.is_empty();

return 0;
}

谢谢各位,很抱歉这个没有条理的问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-10 23:54:30

由于我们看不到头文件,我在这里做了一个假设,但是看到注释,您的链接器错误可能是由于未实现的函数造成的。

我假设您的头"my_queue.h“包含声明而不是实现。您似乎缺少的是函数的实现,这就是您遇到链接器错误的原因。你有my_queue.cpp吗?如果是这样的话,那么您应该链接它,因为否则您的程序不知道函数是实现的,但是,它应该使用它们。这就是造成联动误差的原因。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23001044

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档