dankesttie
dankesttie

Reputation: 1

How do I link my c++ files to work together?

Main.cpp file

#include <iostream>
#include "RetailItem.h"
#include <iomanip>

using namespace std;

//getData function prototype
void getData(string &desc1, string &desc2, string &desc3, int &units1, int &units2, int &units3, double &price1, double &price2, double &price3);

//setData function prototype
void setData(RetailItem& item1, RetailItem& item2, RetailItem& item3, string desc1, string desc2, string desc3, int units1, int units2, int units3, double price1, double price2, double price3);

//displayData function prototype
void displayData(RetailItem &item1, RetailItem &item2, RetailItem &item3);

   int main ()

   {
   
   
   
   
   //Declares desc1,desc2, desc 3 as string variables
   string desc1,desc2, desc3;
   
   //Declares units1, units2, units3 as int variables
   int units1, units2, units3;
   
   //Declares price1, price2, price3 as double variables
   double price1, price2, price3;



   //Declares 3 RetailItem objects to store information for 3 items
   //item1, item2, and item3 of type RetailItem
   RetailItem item1;
   RetailItem item2;
   RetailItem item3;
    
    
   //getData function call  
   getData(desc1, desc2, desc3, units1, units2, units3, price1, price2, price3);
   
   //setData function call
   setData(item1, item2, item3, desc1, desc2, desc3, units1, units2, units3, price1, price2, price3);
   
   //display Data function call
   displayData(item1, item2, item3);
    //RetailItem item1(" ", 0, 0.0);
    
    
   return 0;
   
   
   }
   
   
   
/*-----------------------------------------------------------------

>> Author : Luis Munoz Llamas

>> Date last modified : 2/27/25

>> Assumptions: valid user input
 
>> Purpose: Collects information of three retail items such as description, units on hand, and price

>> Relationships (Arguments to Parameters):
 
a) In parameters :  None

b) Out parameters:  None

c) In/Out parameters (serve as both -- i.e., in & out) 


- string& desc1, string& desc2, string& desc3 (item descriptions)
   - int& units1, int& units2, int& units3 (units on hand)
   - double& price1, double& price2, double& price3 (item prices)

-----------------------------------------------------------------*/



//getData function definition. This function gathers the description, units on hand, and the price of the 3 retail items
void getData(string &desc1, string &desc2, string &desc3, int &units1, int &units2, int &units3, double &price1, double &price2, double &price3)
{
    
    //gets description of item1 and stores it in desc1
    cout << "Enter the description of Item 1: ";
    getline(cin, desc1);
    
    
    //gets units of item1 and stores it in units1
    cout << "Enter the units on Hand: ";
    cin >> units1;
    
    //gets price of item1 and stores it in price1
    cout << "Enter the price: ";
    cin >> price1;
    
    cin.ignore();
    cout << endl;
    
    //gets description of item2 and stores it in desc2
    cout << "Enter the description of the Item 2: ";
    getline(cin, desc2);
    

    //get units of item2 and stores it in units2
    cout << "Enter the units on Hand: ";
    cin >> units2;
    
    
    //gets price of item2 and stores it in price2
    cout << "Enter the price: ";
    cin >> price2;
    
    
    cin.ignore();
    cout << endl;
    
    
    //gets description of item3 and stores it in desc3
    cout << "Enter the description of the Item 3: ";
    getline(cin, desc3);
    

    //gets units of item3 and stores it in units3
    cout << "Enter the units on Hand: ";
    cin >> units3;
    
    
    //gets price of item3 and stores it in price3
    cout << "Enter the price: ";
    cin >> price3;
    
    //item3.setPrice(price);
    
    
    
}



/*-----------------------------------------------------------------

>> Author : Luis Munoz Llamas

>> Date last modified : 2/27/25

>> Assumptions: the three objects exist and the data passed in is valid
 
>> Purpose: Stores the information provided by the user of the item into their respective object

>> Relationships (Arguments to Parameters):
 
a) In parameters :

   - string desc1, string desc2, string desc3 (item descriptions)  
   - int units1, units2, units3 (units on hand)  
   - double price1, price2, price3 (item prices)  

b) Out parameters:  None

c) In/Out parameters (serve as both -- i.e., in & out) 

RetailItem& item1, RetailItem& item2, RetailItem& item3  

-----------------------------------------------------------------*/
//Function definition of the setData function
//This function stores information of the retail items into their respective objects
void setData(RetailItem& item1, RetailItem& item2, RetailItem& item3, string desc1, string desc2, string desc3, int units1, int units2, int units3, double price1, double price2, double price3)
{
    
    //sets information of item1
    item1.setDescription(desc1);
    item1.setUnits(units1);
    item1.setPrice(price1);
    
    //sets information of item2
    item2.setDescription(desc2);
    item2.setUnits(units2);
    item2.setPrice(price2);
    
    
    //sets information og item3
    item3.setDescription(desc3);
    item3.setUnits(units3);
    item3.setPrice(price3);
}

/*-----------------------------------------------------------------

>> Author : Luis Munoz Llamas

>> Date last modified : 2/27/25

>> Assumptions: the objects have been initialized with valid data before being called
 
>> Purpose: Displays item description, units on hand, and price in a table

>> Relationships (Arguments to Parameters):
 
a) In parameters : RetailItem& item1, RetailItem& item2, RetailItem& item3

b) Out parameters:  None

c) In/Out parameters (serve as both -- i.e., in & out) None


-----------------------------------------------------------------*/
//Function definition for the displayData function. This function displays information of the 3 items in a table
void displayData(RetailItem &item1, RetailItem &item2, RetailItem &item3)
{
    
    
    
    cout << setprecision(2) << fixed << endl;

    cout << setw(27) << "Description" << setw(24) << "Units on Hand" << setw(15) << "Price" << endl;
    cout << "_________________________________________________________________________" << endl;
    cout << left << setw(16) << "Item #1" << left << setw(22) << item1.getDescription() << setw(23) << item1.getUnits() << "$" << setw(5) << item1.getPrice()<< endl;
    cout << endl;
    cout << left << setw(16) << "Item #2" << left << setw(22) << item2.getDescription() << setw(23) << item2.getUnits() << "$" << setw(5) << item2.getPrice() << endl;
    cout << endl;
    cout << left << setw(16) << "Item #3" << left << setw(22) << item3.getDescription() << setw(23) << item3.getUnits() << "$" << setw(5) << item3.getPrice() << endl;
    cout << "_________________________________________________________________________" << endl;
    
    
}

RetailItem.cpp file

#include "RetailItem.h"
#include <iostream>
using namespace std;
    //Default Constructor
    //Sets memeber variables to 0
    RetailItem::RetailItem()
    {
        
        
        description = "";
        unitsOnHand = 0;
        price = 0.0;
    }
    
    //Constructor that allows for 3 parameters
    //sets the member variables to the passed parameters
    RetailItem::RetailItem( string desc, int units, double itemPrice)
    {
        
        description = desc;
        unitsOnHand = units;
        price = itemPrice;  
        
    }   
    
    //setDescription member function and definition
    //sets description to desc
    void RetailItem::setDescription(string desc)
    {
        
        description = desc;
    }
    
    
    //setUnits member function and definition
    //sets UnitsOnHand to units
    void RetailItem::setUnits(int units)
    {
        
        unitsOnHand = units; 
            
    }
    
    
    //setPrice member function and definition
    //sets price to itemPrice;
    void RetailItem::setPrice(double itemPrice)
    {
        
        price = itemPrice;
    }
    
    
    //getDescription accessor function and definition
    //returns description
    string RetailItem::getDescription()
    {
        
        
        return description;
    };
    
    
    //getUnits accessor function and defintion
    //returns unitsOnHand
    int RetailItem::getUnits()
    {
        
        
        return unitsOnHand;
        
    }
    
    //getPrice accessor function and definition
    //returns price
    double RetailItem::getPrice()
    {
        
        return price;
    }

RetailItem.h file

#ifndef RETAILITEM_H
#define RETAILITEM_H
#include <iostream>
using namespace std;

//creates a class RetailItem
class RetailItem
{
    
    private:
    
        //declares description as a private string variable
        string description;
        
        //declares UnitsOnHand as a private int variable
        int unitsOnHand;
        
        //declares price as a private double variable
        double price;
    
    public:
        
        //default constructor   
        RetailItem();
        
        //constructor that allows for 3 parameters
        RetailItem( string desc, int units, double itemPrice);
        
        //setDescription member function prototype  
        void setDescription(string desc);
        
        //setUnits member function prototype    
        void setUnits(int units);   
        
        //setPrice member funtion prototype
        void setPrice(double itemPrice);
        
        //getDescription accessor function protype;
        string getDescription();
        
        //getUnits accessor function prototype
        int getUnits();
        
        //getPrice accessor function prototype
        double getPrice();
    
    
};
#endif

I've looked on Google and Youtube and I have found no help. When I try to compile my main.cpp file I get multiple errors saying "undefined reference to ______" and in the blanks are all my functions and constructors from my RetailItem.cpp file. Any help would be appreciated.

Upvotes: 0

Views: 31

Answers (0)

Related Questions