User Name Password Register
DaniWeb IT Discussion Community
All
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
Reply
Join Date: Apr 2008
Posts: 32
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: 272
Reputation: Sci@phy will become famous soon enough Sci@phy will become famous soon enough 
Rep Power: 2
Solved Threads: 41
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: 272
Reputation: Sci@phy will become famous soon enough Sci@phy will become famous soon enough 
Rep Power: 2
Solved Threads: 41
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: 32
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: 32
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: 272
Reputation: Sci@phy will become famous soon enough Sci@phy will become famous soon enough 
Rep Power: 2
Solved Threads: 41
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: 32
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: 272
Reputation: Sci@phy will become famous soon enough Sci@phy will become famous soon enough 
Rep Power: 2
Solved Threads: 41
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: 32
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.

DaniWeb C++ Marketplace
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)

 

Thread Tools Display Modes

Similar Threads
Other Threads in the C++ Forum

All times are GMT -4. The time now is 6:13 pm.
Forum system based on vBulletin Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
©2003 - 2008 DaniWeb® LLC