Home > Blockchain >  How do I successfully implement my .h file to my main .cpp file to make it run without errors
How do I successfully implement my .h file to my main .cpp file to make it run without errors

Time:11-14

The code is supposed to take the class from the .h file and use it in the main to create a custom pet synopsis that can be stored later in another text file. I haven't made the modular extraction to a text file yet because I need to get it at least working and able to actually compile and return the different arrays that make up the custom pet synopsis.

/usr/bin/ld: /tmp/: in function `__static_initialization_and_destruction_0(int, int)':
program3.cpp:(.text 0x411): undefined reference to `dog_list::dog_list()'
/usr/bin/ld: program3.cpp:(.text 0x426): undefined reference to `dog_list::~dog_list()'
collect2: error: ld returned 1 exit status

My .h file

#include<iostream>
#include<cstring>
#include<cctype>
#include<fstream>
using namespace std;
const int SIZE = 20;
const int END = 11;
class dog_list
{
    public:
    dog_list();
    ~dog_list();
    void record_pets();
    private:
    char name[SIZE];
    char breed[SIZE];
    char species[SIZE];
    char service[SIZE];
    char special[SIZE];
};
dog_list op;


void record_pets();

my main .cpp file

#include "program3.h"
int main()
{
       op.record_pets();
        return 0;

}


void dog_list::record_pets()
{
    char personal_list[SIZE];
    int i = 0;
    char again;

    do
    {

        cout << "Enter in pets name: ";
        cin.get(op.name,25,'\n');
        cin.ignore(100,'\n');   
        cout << endl << "Enter breed of pet:  ";
        cin.get(op.breed, 25, '\n');
        cin.ignore(100,'\n');
        cout << endl << "Enter species: ";
        cin.get(op.species,25,'\n');
        cin.ignore(100,'\n');
        cout << endl <<  "Enter in service qualifications: ";
        cin.get(op.service,25,'\n');
        cin.ignore(100,'\n');
        cout << endl << "Enter in special notes: ";
        cin.get(op.special,25,'\n');
        cin.ignore(100,'\n');
        cout << endl;

        cout << "Name:  " << op.name << endl;
        cout <<"Breed: " <<  op.breed << endl;
        cout << "Species: " << op.species << endl;
        cout << "Service Qualifications: " << op.service << endl;
        cout << "Special Notes: " << op.special << endl;

        cout << "Pet saved! Would you like to enter another pet? Y/N: " << endl;
        cin >> again;
        cin.ignore(100,'\n');
        cout << endl;

        if(again == 'y')
        {
            again = toupper(again);
        }


    }while(again == 'Y' && i <= END);
    {
          i;    
    }   
}

CodePudding user response:

You never implement the constructor and destructor, you just declare it:

dog_list();
~dog_list();

You have to implement it, for example, in main.cpp:

dog_list::dog_list() = default;
dog_list::~dog_list() = default;
  • Related