2014-04-10 4 views
0

Привет, ребята, так что я пытался реализовать стек с помощью двух очередей, однако, я столкнулся с проблемой, говоря о том, что ссылки на класс my_queue не определеннеопределенная ссылка на класса C++

ошибки являются (я включая только некоторые, так как все есть неопределенная ссылка)

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, но я предполагаю, что в них нет ошибки.

#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; 
} 

Спасибо, ребята, извините за неорганизованный вопрос.

+0

Как говорится, нет определения для 'my_queue :: my_queue()' –

+1

Это ошибка компоновщика. Как вы компилируете свою программу? – ooga

+0

необходимо просмотреть файлы заголовков – jodag

ответ

1

Поскольку мы не можем видеть файлы заголовков, я делаю здесь предположение, но, видя комментарии, кажется, что ошибка вашего компоновщика может быть связана с невыполненными функциями.

Я предполагаю, что ваш заголовок «my_queue.h» содержит декларацию, а не реализацию. То, что вам кажется недостающим, - это реализация функций, и именно поэтому вы сталкиваетесь с ошибкой компоновщика. У вас есть my_queue.cpp? Если это так, вы должны связать его, потому что иначе ваша программа не знает, что функции реализуются, и все же ожидается, что они будут использовать их. Это является причиной ошибки связи

+0

Да, да. Да, это просто ошибка ссылки. Спасибо за помощь – MidTierDeveloper

Смежные вопросы