Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

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

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

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

#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;    
    }   
}

>Solution :

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;
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading