•
•
•
•
What is DaniWeb IT Discussion Community?
You're currently browsing the C++ section within the Software Development category of DaniWeb, a massive community of 457,696 software developers, web developers, Internet marketers, and tech gurus who are all enthusiastic about making contacts, networking, and learning from each other. In fact, there are 3,298 IT professionals currently interacting right now! Registration is free, only takes a minute and lets you enjoy all of the interactive features of the site.
Please support our C++ advertiser: Programming Forums
Views: 341 | Replies: 11 | Solved
![]() |
•
•
Join Date: Apr 2008
Posts: 32
Reputation:
Rep Power: 1
Solved Threads: 0
I am trying to implement a queue based on a Linked List that I had to write previously. It is templated and for some reason I am getting the following error using g++ when I compile:
It is saying undefined reference however I have declared and defined it so I cant figure out what the problem is.
This is my class declaration and definition:
Here is my main:
Thanks in advance for any help.
g++ LinkedQueueMain.cpp -o LinkedQueueMain /tmp/ccqwStpK.o: In function `main': LinkedQueueMain.cpp:(.text+0x2ee): undefined reference to `LinkedQueue<char>::operator=(LinkedQueue<char> const&)' collect2: ld returned 1 exit status
It is saying undefined reference however I have declared and defined it so I cant figure out what the problem is.
This is my class declaration and definition:
// LinkedQueue.h
#ifndef LINKEDQUEUE_H
#define LINKEDQUEUE_H
#include <iostream>
#include "RuntimeException.h"
#include "LinkedList.h"
template<typename T> class LinkedQueue;
template<typename T>
std::ostream& operator<<(std::ostream& out, const LinkedQueue<T>& queue);
template<typename T>
class LinkedQueue {
private:
LinkedList<T> ll;
public:
// user-defined exceptions
class QueueEmptyException : public RuntimeException {
public:
QueueEmptyException() : RuntimeException("Access to an empty queue") {}
};
LinkedQueue() { } // constructor
~LinkedQueue() { } // destructor
LinkedQueue(const LinkedQueue& queue) { ll = queue.ll; } // copy constructor
LinkedQueue& operator=(const LinkedQueue& queue); // assignment operator
// I have cut out accessory function declarations
friend std::ostream& operator<< <>(std::ostream& out, const LinkedQueue<T>& queue); // overload <<
};
//-------------------------------------------------------------------------------------------------------------------------
template<typename T>
LinkedQueue<T>& LinkedQueue<T>::operator=(const LinkedQueue& queue) {
ll = queue.ll;
return *this;
}
// other functions defined here I just cut them out for space
#endifHere is my main:
#include "LinkedQueue.h"
#include <iostream>
#include <string>
#include <iterator>
using namespace std;
int main()
{
LinkedQueue<char> queue;
LinkedQueue<char> queue_copy;
//===== enqueue() =====
queue.enqueue('1');
queue.enqueue('2');
queue.enqueue('3');
queue.enqueue('4');
queue.enqueue('5');
queue.enqueue('6');
queue_copy = queue; //THIS IS WHERE I BELIEVE THE PROBLEM IS
cerr << "assigning queue to queue_copy, queue_copy = ";
cerr << queue_copy << endl;
cerr << "size of queue_copy = " << queue_copy.size() << endl;
cerr << "first of queue_copy = " << queue_copy.first() << endl << endl;
return 0;
}Thanks in advance for any help.
Are you sure this code works:
'll' is under private section, right? I'm not sure if you can access it.
Here's my code example if it helps:
ll = queue.ll;
Here's my code example if it helps:
cplusplus Syntax (Toggle Plain Text)
//operators //= Complex& Complex::operator=(Complex const& aCplx){ if (this != &aCplx){ mNum.Im = aCplx.getIm(); mNum.Re = aCplx.getRe(); } return *this; }
•
•
Join Date: Apr 2008
Posts: 32
Reputation:
Rep Power: 1
Solved Threads: 0
•
•
•
•
Are you sure this code works:
'll' is under private section, right? I'm not sure if you can access it.ll = queue.ll;
Here's my code example if it helps:
cplusplus Syntax (Toggle Plain Text)
//operators //= Complex& Complex::operator=(Complex const& aCplx){ if (this != &aCplx){ mNum.Im = aCplx.getIm(); mNum.Re = aCplx.getRe(); } return *this; }
Well the definition is within the class and classes can access their own private data members so ya it should work. I tried putting it in the public section just to check and it did the same thing. As to your example thats basically the same thing that im trying to do. I don't see why mine doesnt work.
•
•
•
•
Well the definition is within the class and classes can access their own private data members so ya it should work. I tried putting it in the public section just to check and it did the same thing. As to your example thats basically the same thing that im trying to do. I don't see why mine doesnt work.
I'm not sure about this.
Function can access IT'S own members (this->memb1; this->memb2

But I'm really not sure about accessing other instance of same type...
Maybe your problem is in something else...
•
•
Join Date: Apr 2008
Posts: 32
Reputation:
Rep Power: 1
Solved Threads: 0
•
•
•
•
I'm not sure about this.
Function can access IT'S own members (this->memb1; this->memb2
But I'm really not sure about accessing other instance of same type...
Maybe your problem is in something else...
I have done something very similar to that previously so I am pretty sure thats not the problem.
BTW Thanks to everyone thats been trying to help. This is getting really frustrating.
![]() |
•
•
•
•
•
•
•
•
DaniWeb C++ Marketplace
•
•
•
•
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
Similar Threads
- [linker error] undefined reference - why am I getting this error? (C++)
- undefined reference error while linking..help (C++)
- getting the undefined reference error (C++)
- undefined reference error -HELP! (C++)
- Dev C++ linker errors, undefined reference (C++)
- [Linker error] undefined reference to `CQTMovieFile::CQTMovieFile()' (C++)
- Dev-C++, GLUI linker error, undefined reference (C++)
- Linker Error>Undefined reference error to xyz (C++)
- undefined reference errors when using C++ Sockets Library (C++)
Other Threads in the C++ Forum
- Previous Thread: C++ with GSL help
- Next Thread: VS 2005 - Working with templates and lists error.


Linear Mode