I am currently a beginner at Object Orientated Programming. I am practicing inheritance and abstraction with base and derived classes using both header and cpp files. However, i am continually getting the following error.
main-1-1.cpp:(.text+0x2b): undefined reference to `Derived::Derived()'
clang: error: linker command failed with exit code 1 (use -v to see invocation)
I cannot seem to work out why. I have attempted to swap/rearrange the destructor and constructors throughout the cpp and header files but it still shows the same error.
Any help would be much appreciated! The code is as follows:
Base.h:
#ifndef BASE_H
#define BASE_H
class Base {
 public:
  virtual void print() = 0;
  Base();
  virtual ~Base();
};
#endif /* BASE_H */
Base.cpp
#include "Base.h"
#include <iostream>
using namespace std;
Base::Base() { cout << "\n Constructor Base class"; }
Base::~Base() { cout << "base destructor called"; }
main.cpp
#include "Base.h"
#include "Derived.h"
int main() {
  Base *bptr = new Derived;  // A pointer object reference the Base class.
  bptr->print();
  delete bptr;  // Delete the pointer object.
}
Derived.h:
#ifndef DERIVED_H
#define DERIVED_H
#include "Base.h"
class Derived : public Base {
 public:
  Derived();
  void print();
  ~Derived();
};
#endif /* DERIVED_H */
Derived.cpp:
#include "Derived.h"
#include "Base.h"
using namespace std;
#include <iostream>
Derived::Derived() { cout << "\n Constructor Derived class"; }
void Derived::print() { cout << "Derived is printing." << endl; }
Derived::~Derived() { cout << "Derived class Destructor" << endl; }
 
    