I have been studying C++ for a year now, and I've started a small test project: A linked list container library. I'm using Dev-C++, and when I try to compile the listing, it gives me the errors:
Compiler: Default compiler
Executing g++.exe...
g++.exe "C:\Documents and Settings\Stephen\Desktop\Nathan\Programming Languages\C++\Kenogu's Container Library\QueueTest.cpp" -o "C:\Documents and Settings\Stephen\Desktop\Nathan\Programming Languages\C++\Kenogu's Container Library\QueueTest.exe" -fexceptions -pg -g3 -I"C:\Program Files\Dev C++\Dev-Cpp\include\c++" -I"C:\Program Files\Dev C++\Dev-Cpp\include\c++\backward" -I"C:\Program Files\Dev C++\Dev-Cpp\include" -I"C:\Program Files\Dev C++\Dev-Cpp\include\c++\mingw32" -I"C:\Program Files\Dev C++\Dev-Cpp\include\c++\random" -L"C:\Program Files\Dev C++\Dev-Cpp\lib" -L"C:\Program Files\Dev C++\Dev-Cpp\Allegro\Lib"
In file included from C:/Documents and Settings/Stephen/Desktop/Nathan/Programming Languages/C++/Kenogu's Container Library/Queue.cpp:12,
from C:/Documents and Settings/Stephen/Desktop/Nathan/Programming Languages/C++/Kenogu's Container Library/QueueTest.cpp:2:
C:/Documents and Settings/Stephen/Desktop/Nathan/Programming Languages/C++/Kenogu's Container Library/Queue.hpp:26: `

LLQueue' is not a template type
C:/Documents and Settings/Stephen/Desktop/Nathan/Programming Languages/C++/Kenogu's Container Library/Queue.hpp:34: data
member `head' cannot be a member template
C:/Documents and Settings/Stephen/Desktop/Nathan/Programming Languages/C++/Kenogu's Container Library/Queue.hpp:35: data
member `tail' cannot be a member template
C:/Documents and Settings/Stephen/Desktop/Nathan/Programming Languages/C++/Kenogu's Container Library/Queue.hpp:36: data
member `size' cannot be a member template
In file included from C:/Documents and Settings/Stephen/Desktop/Nathan/Programming Languages/C++/Kenogu's Container Library/QueueTest.cpp:2:
C:/Documents and Settings/Stephen/Desktop/Nathan/Programming Languages/C++/Kenogu's Container Library/Queue.cpp:19: non-template
type `LLQueue' used as a template
C:/Documents and Settings/Stephen/Desktop/Nathan/Programming Languages/C++/Kenogu's Container Library/Queue.cpp:20: ISO
C++ forbids declaration of `LLQueue' with no type
C:/Documents and Settings/Stephen/Desktop/Nathan/Programming Languages/C++/Kenogu's Container Library/Queue.cpp: In
function `int LLQueue()':
C:/Documents and Settings/Stephen/Desktop/Nathan/Programming Languages/C++/Kenogu's Container Library/Queue.cpp:20: only
constructors take base initializers
C:/Documents and Settings/Stephen/Desktop/Nathan/Programming Languages/C++/Kenogu's Container Library/Queue.cpp: At
global scope:
C:/Documents and Settings/Stephen/Desktop/Nathan/Programming Languages/C++/Kenogu's Container Library/Queue.cpp:23: syntax
error before `::' token
C:/Documents and Settings/Stephen/Desktop/Nathan/Programming Languages/C++/Kenogu's Container Library/Queue.cpp:23: `
t' was not declared in this scope
C:/Documents and Settings/Stephen/Desktop/Nathan/Programming Languages/C++/Kenogu's Container Library/Queue.cpp:23: `
InData' was not declared in this scope
C:/Documents and Settings/Stephen/Desktop/Nathan/Programming Languages/C++/Kenogu's Container Library/Queue.cpp:23: ISO
C++ forbids declaration of `push' with no type

C:/Documents and Settings/Stephen/Desktop/Nathan/Programming Languages/C++/Kenogu's Container Library/Queue.cpp:23: syntax
error before `{' token
C:/Documents and Settings/Stephen/Desktop/Nathan/Programming Languages/C++/Kenogu's Container Library/Queue.cpp:27: ISO

C++ forbids declaration of `tail' with no type
C:/Documents and Settings/Stephen/Desktop/Nathan/Programming Languages/C++/Kenogu's Container Library/Queue.cpp:27: `
node' was not declared in this scope
C:/Documents and Settings/Stephen/Desktop/Nathan/Programming Languages/C++/Kenogu's Container Library/Queue.cpp:28: parse
error before `if'
C:/Documents and Settings/Stephen/Desktop/Nathan/Programming Languages/C++/Kenogu's Container Library/Queue.cpp:30: syntax

error before `++' token
C:/Documents and Settings/Stephen/Desktop/Nathan/Programming Languages/C++/Kenogu's Container Library/Queue.cpp:34: syntax
error before `::' token
C:/Documents and Settings/Stephen/Desktop/Nathan/Programming Languages/C++/Kenogu's Container Library/Queue.cpp:34: ISO
C++ forbids declaration of `pop' with no type
C:/Documents and Settings/Stephen/Desktop/Nathan/Programming Languages/C++/Kenogu's Container Library/Queue.cpp: In
function `int pop()':
C:/Documents and Settings/Stephen/Desktop/Nathan/Programming Languages/C++/Kenogu's Container Library/Queue.cpp:35: `
size' undeclared (first use this function)
C:/Documents and Settings/Stephen/Desktop/Nathan/Programming Languages/C++/Kenogu's Container Library/Queue.cpp:35: (Each
undeclared identifier is reported only once for each function it appears
in.)

C:/Documents and Settings/Stephen/Desktop/Nathan/Programming Languages/C++/Kenogu's Container Library/Queue.cpp:37: `
t' undeclared (first use this function)
C:/Documents and Settings/Stephen/Desktop/Nathan/Programming Languages/C++/Kenogu's Container Library/Queue.cpp:37: parse
error before `=' token
C:/Documents and Settings/Stephen/Desktop/Nathan/Programming Languages/C++/Kenogu's Container Library/Queue.cpp:38: `

LLQueueNode' undeclared (first use this function)
C:/Documents and Settings/Stephen/Desktop/Nathan/Programming Languages/C++/Kenogu's Container Library/Queue.cpp:39: `
head' undeclared (first use this function)
C:/Documents and Settings/Stephen/Desktop/Nathan/Programming Languages/C++/Kenogu's Container Library/Queue.cpp:40: `
newHead' undeclared (first use this function)
C:/Documents and Settings/Stephen/Desktop/Nathan/Programming Languages/C++/Kenogu's Container Library/Queue.cpp:42: `
data' undeclared (first use this function)
C:/Documents and Settings/Stephen/Desktop/Nathan/Programming Languages/C++/Kenogu's Container Library/QueueTest.cpp: In
function `int main()':
C:/Documents and Settings/Stephen/Desktop/Nathan/Programming Languages/C++/Kenogu's Container Library/QueueTest.cpp:6: parse
error before `(' token
C:/Documents and Settings/Stephen/Desktop/Nathan/Programming Languages/C++/Kenogu's Container Library/QueueTest.cpp:11: `
q' undeclared (first use this function)

Execution terminated
Here is the code used:
Code:
/*
		 			-=Linked List queue=-
				 -=COPYRIGHT KENOGU LABZ 2005=-

Classes used:
LLQueue
LLQueueNode
*/
#ifndef QUEUE_HPP
#define QUEUE_HPP

class LLQueue;

template <class t>
class LLQueueNode {
public:
	LLQueueNode(t * InData, LLQueueNode * InNext);
	~LLQueueNode(){delete data; delete next;}
	friend class LLQueue;
private:
	t * data;
	LLQueueNode<t> * next;
};

template <class t>
class LLQueue {
public:
	LLQueue();
	~LLQueue(){delete head; delete tail;}
	void push(t * InData);
	t * pop();
	int getSize() {return size;}
private:
	LLQueueNode<t> * head;
	LLQueueNode<t> * tail;
	int size;
};

class Empty{};

#endif
-------------------------------------------------------------------

/*
		 			-=Linked List queue=-
				 -=COPYRIGHT KENOGU LABZ 2005=-

Classes used:
Queue
QueueNode
*/
#ifndef QUEUE_CPP
#define QUEUE_CPP

#include "Queue.hpp"

template <class t>
LLQueueNode<t>::LLQueueNode(t * InData, LLQueueNode * InNext)
	:data(InData), next(InNext){}

template <class t>
LLQueue<t>::LLQueue()
	:head(0), tail(0), size(0){}

template <class t>
LLQueue<t>::push(t * InData) {
	LLQueueNode* node = new LLQueueNode(InData, 0);
	if(size)
		tail->next = node;
	tail = node;
	if(!size)
		head = node;
	size++;
}

template <class t>
t LLQueue<t>::pop() {
	if(!size)
		throw Empty();
	t data = head->data;
	LLQueueNode newHead = head->next;
	delete head;
	head = newHead;
	size--;
	return data;
}
-----------------------------------------------------------------

#include <iostream>
#include "Queue.cpp"
using namespace std;

int main() {
	LLQueue<int> q();
	unsigned short choice;
	 do {
		 cout << "Enter a number to add to the queue (0 to exit): ";
		 cin >> choice;
		 q.push(new int(choice));
	 } while(choice!=0);
	 try {
		 cout << "Queue Size: " << q.getSize() << endl;
		 cout << "Next value: " << q.pop() << endl;
	}
	catch(Empty) {}
	cout << "End of Queue. (Press CTRL-Z)";
	char leave;
	do
		cin >> leave;
	while(leave != EOF);
	return 0;
}
Could anyone tell me why this isn't compiling? Design criticisms are welcome, too.

-=Kenogu Labz=-