RSS Forums RSS
Please support our C++ advertiser: Programming Forums
Views: 586 | Replies: 11 | Solved | Thread Tools  Display Modes
Reply
Join Date: Apr 2008
Posts: 39
Reputation: chunalt787 is an unknown quantity at this point 
Rep Power: 1
Solved Threads: 0
chunalt787 chunalt787 is offline Offline
Light Poster

Undefined reference error

  #1  
Oct 11th, 2008
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:

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

#endif

Here 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.
AddThis Social Bookmark Button
Reply With Quote  
Join Date: Mar 2008
Posts: 246
Reputation: Sky Diploma is on a distinguished road 
Rep Power: 1
Solved Threads: 34
Sky Diploma's Avatar
Sky Diploma Sky Diploma is offline Offline
Posting Whiz in Training

Re: Undefined reference error

  #2  
Oct 11th, 2008
I am not sure about this , But Why returning (*this)? In your = operator.
User, n. The word computer professionals use when they mean "idiot." ~Dave Barry
Reply With Quote  
Join Date: Sep 2008
Posts: 273
Reputation: Sci@phy will become famous soon enough Sci@phy will become famous soon enough 
Rep Power: 2
Solved Threads: 42
Sci@phy's Avatar
Sci@phy Sci@phy is offline Offline
Posting Whiz in Training

Re: Undefined reference error

  #3  
Oct 11th, 2008
Are you sure this code works:
ll = queue.ll;
'll' is under private section, right? I'm not sure if you can access it.
Here's my code example if it helps:
  1. //operators
  2. //=
  3. Complex& Complex::operator=(Complex const& aCplx){
  4. if (this != &aCplx){
  5. mNum.Im = aCplx.getIm();
  6. mNum.Re = aCplx.getRe();
  7. }
  8. return *this;
  9. }
Reply With Quote  
Join Date: Sep 2008
Posts: 273
Reputation: Sci@phy will become famous soon enough Sci@phy will become famous soon enough 
Rep Power: 2
Solved Threads: 42
Sci@phy's Avatar
Sci@phy Sci@phy is offline Offline
Posting Whiz in Training

Re: Undefined reference error

  #4  
Oct 11th, 2008
Originally Posted by Sky Diploma View Post
I am not sure about this , But Why returning (*this)? In your = operator.

(*this) is returned so you can write things like:
myObjA = myObjB = myObjC;
Reply With Quote  
Join Date: Apr 2008
Posts: 39
Reputation: chunalt787 is an unknown quantity at this point 
Rep Power: 1
Solved Threads: 0
chunalt787 chunalt787 is offline Offline
Light Poster

Re: Undefined reference error

  #5  
Oct 11th, 2008
Our professor gave us a skeleton of the code and it already had the return statement in it so I didn't change it. The LinkedList = operator overload returns a pointer as well.
Reply With Quote  
Join Date: Apr 2008
Posts: 39
Reputation: chunalt787 is an unknown quantity at this point 
Rep Power: 1
Solved Threads: 0
chunalt787 chunalt787 is offline Offline
Light Poster

Re: Undefined reference error

  #6  
Oct 11th, 2008
Originally Posted by Sci@phy View Post
Are you sure this code works:
ll = queue.ll;
'll' is under private section, right? I'm not sure if you can access it.
Here's my code example if it helps:
  1. //operators
  2. //=
  3. Complex& Complex::operator=(Complex const& aCplx){
  4. if (this != &aCplx){
  5. mNum.Im = aCplx.getIm();
  6. mNum.Re = aCplx.getRe();
  7. }
  8. return *this;
  9. }


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.
Reply With Quote  
Join Date: Sep 2008
Posts: 273
Reputation: Sci@phy will become famous soon enough Sci@phy will become famous soon enough 
Rep Power: 2
Solved Threads: 42
Sci@phy's Avatar
Sci@phy Sci@phy is offline Offline
Posting Whiz in Training

Re: Undefined reference error

  #7  
Oct 11th, 2008
Originally Posted by chunalt787 View Post
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...
Reply With Quote  
Join Date: Apr 2008
Posts: 39
Reputation: chunalt787 is an unknown quantity at this point 
Rep Power: 1
Solved Threads: 0
chunalt787 chunalt787 is offline Offline
Light Poster

Re: Undefined reference error

  #8  
Oct 11th, 2008
Originally Posted by Sci@phy View Post
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.
Reply With Quote  
Join Date: Sep 2008
Posts: 273
Reputation: Sci@phy will become famous soon enough Sci@phy will become famous soon enough 
Rep Power: 2
Solved Threads: 42
Sci@phy's Avatar
Sci@phy Sci@phy is offline Offline
Posting Whiz in Training

Re: Undefined reference error

  #9  
Oct 11th, 2008
Zip and post entire code, please.
It's frustrating me now too
Reply With Quote  
Join Date: Apr 2008
Posts: 39
Reputation: chunalt787 is an unknown quantity at this point 
Rep Power: 1
Solved Threads: 0
chunalt787 chunalt787 is offline Offline
Light Poster

Re: Undefined reference error

  #10  
Oct 13th, 2008
I think its zipped now thats the first time I have done that. I am sorry its been so long. I had an emergency that kept me from the computer for a couple days. Im back now and still annoyed by this error.
Attached Files
File Type: zip LinkedQueue.zip (1.4 KB, 1 views)
Reply With Quote  
Reply

Only community members can participate in forum threads. You must register or log in to contribute.



Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)

 

Thread Tools Display Modes
Forums | Blogs | Tutorials | Code Snippets | Whitepapers | RSS Feeds | Advertising
All times are GMT -4. The time now is 8:58 am.
Newsletter Archive - Sitemap - Privacy Statement - Acceptable Use Policy - Contact Us
Forum system based on vBulletin Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
©2003 - 2008 DaniWeb® LLC