I have the following classes ( Enemy class is the parent class and Boss and SuperDuperBoss are children classes). My problem with SuperDuperBoss
#ifndef _ENEMY_H
#define _ENEMY_H
#include <iostream>
    class Enemy
    {
    public:
        void SelectAnimation();
        inline void runAI() 
        {
            std::cout << "RunAI() is running ...\n";
        }
    private:
        int m_iHiPoints;
    };
    #endif
and this is the children classes
#ifndef BOSS_H
#define BOSS_H
#include "Enemy.h"
class Boss : public Enemy
{
 public:
    void runAI();
};
class SuperDuperBoss : public Boss
{
public:
    void runAI();
};
#endif
This is the main.cpp
#include "Enemy.h"
#include "Boss.h"
int main()
{
    Enemy enemy1;
    Boss boss1;
    SuperDuperBoss supBoss;
    enemy1.runAI();
    boss1.runAI();
    supBoss.runAI();  // <--- Error: linking
    return 0;
}
I have a linking error.
Undefined symbols for architecture x86_64:
  "SuperDuperBoss::runAI()", referenced from:
      _main in main.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [test] Error 1
 
    