Hi all,
This is the code that I have. I got this code and I need to work with it:
When I build it, I get the following errors:
This doesn't make sense. All of the files are located in the same project. What is not being detected by the linker?
This is the code that I have. I got this code and I need to work with it:
Code:
#include <iostream>
#include "queueType.h"
int main()
{
queueType<int> qt(100);
for (int i = 0; i < 100; i++)
{
qt.addQueue(i);
}
return 0;
}Code:
// queueTpe.h:
#pragma once
#include <iostream>
#include "queueADT.h"
template <class Type>
class queueType : public queueADT<Type>
{
public:
//const queueType<Type>& operator=(const queueType<Type>&);
queueType();
queueType(int queueSize = 100);
queueType(const queueType<Type>& otherQueue);
~queueType();
bool isEmptyQueue() const;
bool isFullQueue() const;
void initializeQueue();
Type front() const;
Type back() const;
void addQueue(const Type& queueElement);
void deleteQueue();
void moveNthFront(unsigned int value_iter);
private:
int maxQueueSize;
int count;
int queueFront;
int queueRear;
Type* list;
};Code:
// queueType.cpp:
#include "queueType.h"
template <class Type>
bool queueType<Type>::isEmptyQueue() const
{
return (count == 0);
}
template <class Type>
bool queueType<Type>::isFullQueue() const
{
return (count == maxQueueSize);
}
template <class Type>
void queueType<Type>::initializeQueue()
{
queueFront = 0;
queueRear = maxQueueSize - 1;
count = 0;
}
template <class Type>
Type queueType<Type>::front() const
{
assert(!isEmptyQueue());
return list[queueFront];
}
template <class Type>
Type queueType<Type>::back() const
{
assert(!isEmptyQueue());
return list[queueRear];
}
template <class Type>
void queueType<Type>::addQueue(const Type& newElement)
{
if (!isFullQueue())
{
queueRear = (queueRear + 1) % maxQueueSize;
count++;
list[queueRear] = newElement;
}
else
{
std::cout << "Cannot add to a full queue." << std::endl;
}
}
template <class Type>
void queueType<Type>::deleteQueue()
{
if (!isEmptyQueue())
{
count--;
queueFront = (queueFront + 1) % maxQueueSize;
}
else
{
std::cout << "Cannot remove from an empty queue" << std::endl;
}
}
template <class Type>
void queueType<Type>::moveNthFront(unsigned int value_iter)
{
if (value_iter < maxQueueSize)
{
Type front_val = list[0];
list[0] = list[value_iter];
list[value_iter] = front_val;
}
else
{
std::cout << " ERROR: The iter value is larger than the maximum queue size." << std::endl;
}
}
template <class Type>
queueType<Type>::queueType()
{
maxQueueSize = 100;
queueFront = 0;
queueRear = maxQueueSize - 1;
count = 0;
list = new Type[maxQueueSize];
}
template <class Type>
queueType<Type>::queueType(int queueSize)
{
if (queueSize <= 0)
{
std::cout << "Size of the array to hold the queue must be positive." << std::endl;
std::cout << "Creating an array of size 100." << std::endl;
maxQueueSize = 100;
}
else
{
maxQueueSize = queueSize;
}
queueFront = 0;
queueRear = maxQueueSize - 1;
count = 0;
list = new Type[maxQueueSize];
}
template <class Type>
queueType<Type>::queueType(const queueType<Type>& otherQueue)
{
queueFront = 0;
queueRear = otherQueue.maxQueueSize - 1;
count = 0;
list = new Type[otherQueue.maxQueueSize];
// copy the actual contents.
for (int i = 0; i < otherQueue.maxQueueSize; i++)
{
list[i] = otherQueue.list[i];
}
}
template <class Type>
queueType<Type>::~queueType()
{
delete[] list;
}Code:
// queueADT.h:
#pragma once
template <class Type>
class queueADT
{
public:
virtual bool isEmptyQueue() const = 0;
virtual bool isFullQueue() const = 0;
virtual void initializeQueue() = 0;
virtual Type front() const = 0;
virtual Type back() const = 0;
virtual void addQueue(const Type& queueElement) = 0;
virtual void deleteQueue() = 0;
};Code:
Severity Code Description Project File Line Suppression State
Error LNK2019 unresolved external symbol "public: __cdecl queueType<int>::queueType<int>(int)" (??0?$queueType@H@@QEAA@H@Z) referenced in function main foo_bar_08 C:\Users\woo\source\repos\foo_bar_08\foo_bar_08.obj 1
Error LNK2019 unresolved external symbol "public: __cdecl queueType<int>::~queueType<int>(void)" (??1?$queueType@H@@QEAA@XZ) referenced in function main foo_bar_08 C:\Users\woo\source\repos\foo_bar_08\foo_bar_08.obj 1
Error LNK2019 unresolved external symbol "public: void __cdecl queueType<int>::addQueue(int const &)" (?addQueue@?$queueType@H@@QEAAXAEBH@Z) referenced in function main foo_bar_08 C:\Users\woo\source\repos\foo_bar_08\foo_bar_08.obj 1
Error LNK1120 3 unresolved externals foo_bar_08 C:\Users\woo\source\repos\foo_bar_08\x64\Debug\foo_bar_08.exe 1