Programming Assignment Error I am suppose to be able to create a list of custome
ID: 3798650 • Letter: P
Question
Programming Assignment Error
I am suppose to be able to create a list of customer stores for each employee in the database.
However, I have followed most of the requirements but I am having an issue with the code from the CustomerList.cpp file.
I am getting Code Error: LNK2019 from Visual Studios 2015
Some errors:
1.) Error LNK2019 unresolved external symbol "public: __thiscall Store::Store(int,char *,char *,char *,char *,char *)" (??0Store@@QAE@HPAD0000@Z) referenced in function "public: bool __thiscall CustomerList::addStore(class Store *)" (?addStore@CustomerList@@QAE_NPAVStore@@@Z)
2.) Error LNK2001 unresolved external symbol "public: __thiscall Store::Store(int,char *,char *,char *,char *,char *)" (??0Store@@QAE@HPAD0000@Z)
3.) Error LNK2019 unresolved external symbol "public: int __thiscall Store::getStoreID(void)" (?getStoreID@Store@@QAEHXZ) referenced in function "public: bool __thiscall CustomerList::addStore(class Store *)" (?addStore@CustomerList@@QAE_NPAVStore@@@Z)
4. Error LNK2019 unresolved external symbol "public: char * __thiscall Store::getStoreName(void)" (?getStoreName@Store@@QAEPADXZ) referenced in function "public: bool __thiscall CustomerList::addStore(class Store *)" (?addStore@CustomerList@@QAE_NPAVStore@@@Z)
5.) Error LNK2019 unresolved external symbol "public: char * __thiscall Store::getStoreAddress(void)" (?getStoreAddress@Store@@QAEPADXZ) referenced in function "public: bool __thiscall CustomerList::addStore(class Store *)" (?addStore@CustomerList@@QAE_NPAVStore@@@Z)
CustomerList.cpp
#include
#include "CustomerList.h"
#include "Store.h"
using namespace std;
CustomerList::CustomerList()
{
m_pHead = NULL;
// Default constructor
}
CustomerList::~CustomerList()
{
delete m_pHead;
// Destructor
}
//THE ERRORS STARTS FROM HERE. WHEN I COMMENT OUT ALL LINES FROM THIS FILE ONLY BEGINNING HERE AND BELOW THE ERRORS GO AWAY. ERRORS PROVIDED ON PICTURE.
bool CustomerList::addStore(Store *s)
{
//creating a new instance
if (m_pHead == NULL)
{
m_pHead = new Store(s->getStoreID(), s->getStoreName(), s->getStoreAddress(), s->getStoreCity(), s->getStoreState(), s->getStoreZip());
return true;
}
else
{
Store *temp;
temp = m_pHead;
while (temp->m_pNext != NULL)
{
temp = temp->m_pNext;
}
temp->m_pNext = new Store(s->getStoreID(), s->getStoreName(), s->getStoreAddress(), s->getStoreCity(), s->getStoreState(), s->getStoreZip());
return true;
}
}
Store *CustomerList::removeStore(int ID)
{
Store *temp, *back;
temp = m_pHead;
back = NULL;
while ((temp != NULL) && (ID != temp->getStoreID()))
{
back = temp;
temp = temp->m_pNext;
}
if (temp == NULL)
return NULL;
else if (back == NULL)
{
m_pHead = m_pHead->m_pNext;
return temp;
}
else
{
back->m_pNext = temp->m_pNext;
return temp;
}
return NULL;
}
Store *CustomerList::getStore(int ID)
{
Store *temp;
temp = m_pHead;
while ((temp != NULL) && (ID != temp->getStoreID()))
{
temp = temp->m_pNext;
}
if (temp == NULL)
return NULL;
else
{
Store *retStore = new Store;
*retStore = *temp;
retStore->m_pNext = NULL;
return retStore;
}
}
bool CustomerList::updateStore(int ID, char *name, char *addr, char *city, char *st, char *zip)
{
return false;
}
void CustomerList::printStoresInfo()
{
Store *temp;
cout << " ===================================================================================== " << endl;
if (m_pHead == NULL)
{
cout << " The List is currently empty. ";
}
else
{
temp = m_pHead;
while (temp != NULL)
{
temp->printStoreInfo();
temp = temp->m_pNext;
}
}
}
CustomerList.h
#pragma once
#include
#include "Store.h"
class CustomerList
{
public:
Store *m_pHead;
CustomerList();
~CustomerList();
bool addStore(Store *s);
Store *removeStore(int ID);
Store *getStore(int ID);
bool updateStore(int ID, char *name, char *addr, char *city, char *st, char *zip);
void printStoresInfo();
};
Store.cpp
#pragma once
#include "Store.h"
#include
using namespace std;
Store::Store()
{
m_pNext = NULL;
}
Store::Store(int ID, char *name, char *addr, char *city, char *st, char *zip)
{
m_iStoreID = ID;
strcpy(m_sStoreName, name);
strcpy(m_sAddress, addr);
strcpy(m_sCity, city);
strcpy(m_sState, st);
strcpy(m_sZip, zip);
m_pNext = NULL;
}
Store::~Store()
{
// Nothing to do here
}
int Store::getStoreID()
{
return m_iStoreID;
}
void Store::setStoreID(int ID)
{
m_iStoreID = ID;
}
char *Store::getStoreName()
{
char *name = new char[strlen(m_sStoreName) + 1];
strcpy(name, m_sStoreName);
return name;
}
void Store::setStoreName(char *name)
{
strcpy(m_sStoreName, name);
}
char *Store::getStoreAddress()
{
char *addr = new char[strlen(m_sAddress) + 1];
strcpy(addr, m_sAddress);
return addr;
}
void Store::setStoreAddress(char *addr)
{
strcpy(m_sAddress, addr);
}
char *Store::getStoreCity()
{
char *city = new char[strlen(m_sCity) + 1];
strcpy(city, m_sCity);
return city;
}
void Store::setStoreCity(char *city)
{
strcpy(m_sCity, city);
}
char *Store::getStoreState()
{
char *state = new char[strlen(m_sState) + 1];
strcpy(state, m_sState);
return state;
}
void Store::setStoreState(char *state)
{
strcpy(m_sState, state);
}
char *Store::getStoreZip()
{
char *zip = new char[strlen(m_sZip) + 1];
strcpy(zip, m_sZip);
return zip;
}
void Store::setStoreZip(char *zip)
{
strcpy(m_sZip, zip);
}
void Store::printStoreInfo()
{
cout << m_iStoreID << setw(20) << m_sStoreName << setw(15) << m_sAddress
<< setw(15) << m_sCity << ", " << m_sState << setw(10) << m_sZip << " ";
}
Store.h
#pragma once
#include
using namespace std;
class Store
{
private:
int m_iStoreID;
char m_sStoreName[64];
char m_sAddress[64];
char m_sCity[32];
char m_sState[32];
char m_sZip[11];
public:
Store *m_pNext;
Store(); // Default constructor
Store(int ID, // Constructor
char *name,
char *addr,
char *city,
char *st,
char *zip);
~Store(); // Destructor
int getStoreID(); // Get/Set store ID
void setStoreID(int ID);
char *getStoreName(); // Get/Set store name
void setStoreName(char *name);
char *getStoreAddress(); // Get/Set store address
void setStoreAddress(char *addr);
char *getStoreCity(); // Get/Set store city
void setStoreCity(char *city);
char *getStoreState(); // Get/Set store state
void setStoreState(char *state);
char *getStoreZip(); // Get/Set store zip code
void setStoreZip(char *zip);
void printStoreInfo(); // Print all info on this store
};
EmployeeRecord.h
#pragma once
#include "CustomerList.h"
class EmployeeRecord
{
private:
int m_iEmployeeID;
char m_sFirstName[32];
char m_sLastName[32];
int m_iDeptID;
double m_dSalary;
public:
CustomerList *getCustomerList();
CustomerList *m_pCustomerList;
EmployeeRecord(); //Constructor
EmployeeRecord(int ID, char *fName, char *lName, int dept, double sal); //Setting the values.
~EmployeeRecord(); //Destructor
int getID(); // Return the value stored in the member variable
void setID(int ID);
void getName(char *fName, char *lName);
void setName(char *fName, char *lName);
int getDept();
void setDept(int d);
double getSalary();//Define Pointer Function
void setSalary(double sal);//Copy the function argument to m_dSalary.
void printRecord(); //Print to screen
};
EmployeeRecord.cpp
#include
#include "EmployeeRecord.h"
#include
#include
using namespace std;
EmployeeRecord::EmployeeRecord()
{
//Set Values
m_iEmployeeID = 0;
m_sFirstName[0] = '';
m_sLastName[0] = '';
m_iDeptID = 0;
m_dSalary = 0.0;
}
EmployeeRecord::EmployeeRecord(int ID, char *fName, char *lName, int dept, double sal)
{
//Problem 1
m_iEmployeeID = ID;
strcpy(m_sFirstName, fName);
strcpy(m_sLastName, lName);
m_iDeptID = dept;
m_dSalary = sal;
}
//Destructor
EmployeeRecord::~EmployeeRecord()
{
}
int EmployeeRecord::getID()
{
return m_iEmployeeID;
}
void EmployeeRecord::setID(int ID)
{
m_iEmployeeID = ID;
}
void EmployeeRecord::getName(char *fName, char *lName)
{
//Problem 2
strcpy(fName, m_sFirstName);
strcpy(lName, m_sLastName);
}
void EmployeeRecord::setName(char *fName, char *lName)
{
strcpy(m_sFirstName, fName);
strcpy(m_sLastName, lName);
}
int EmployeeRecord::getDept()
{
return m_iDeptID;
}
void EmployeeRecord::setDept(int d)
{
m_iDeptID = d;
}
double EmployeeRecord::getSalary()
{
return m_dSalary;
}
void EmployeeRecord::setSalary(double sal)
{
m_dSalary = sal;
}
void EmployeeRecord::printRecord()
{
cout << "ID: " << m_iEmployeeID << endl;
cout << "First Name: " << m_sFirstName << endl;
cout << "Last Name: " << m_sLastName << endl;
cout << "Department: " << m_iDeptID << endl;
cout << "Salary: " << m_dSalary << endl;
}
CustomerList *EmployeeRecord::getCustomerList()
{
return m_pCustomerList;
}
int main(void)
{
int ID;
char firstname[32] = "";
char lastname[32] = "";
int dept;
double sal;
cout << "Enter Employee ID: ";
cin >> ID;
cout << "Enter your First Name: ";
cin >> firstname;
cout << "Enter your last name: ";
cin >> lastname;
cout << "Enter Department: ";
cin >> dept;
cout << "Enter Salary: ";
cin >> sal;
EmployeeRecord *Employee = new EmployeeRecord(ID, firstname, lastname, dept, sal);
Employee->printRecord();
Employee->setID(2);
char* firstName = "John";
char* lastName = "Doe";
Employee->setName(firstName, lastName);
Employee->setDept(2);
Employee->setSalary(4000);
cout << "--------------------------------" << endl;
Employee->printRecord();
system("pause");
CustomerList *cl = Employee->getCustomerList();
Store *s = new Store(2505, "Best Buy", "1231 Main St.", "Birmingham", "Alabama", "12345");
cl->addStore(s);
cl->printStoresInfo();
return 0;
}
Explanation / Answer
The following statement is needed to be added :
#include "Store.cpp" in CustomerList.cpp
to get the definitions of the methods being used in addStore function because from Store.h we get only the declarations and not the definitions.
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.