Hi Thanks for the reply. I only have 1 instance of human fighter ship at present, but I understand what you are saying about the array. I have re-wittne the code as follows, and any comments would be appreciated. The code runs fine and prints to console all the stats including the additional humanfightership missile stat:
Code:
// Main.cpp

#include <iostream>
#include "SpaceShip.h"
#include "Vector3.h"


using namespace std;

int main()
{

    Spaceship* ship = new HumanFighterShip("Human Fighter", Vector3(5.0f, 6.0f, -3.0f), Vector3(1.0f, 2.0f, 3.0f),100, 0, 10);

    ship->printStats();

    cout << endl;

    HumanFighterShip* fighterShip = (HumanFighterShip*) ship;

    fighterShip->attacking();
    fighterShip->fireLaserGun();
    fighterShip->fireMissle();
 
    delete ship;

}
Code:
// Spaceship.cpp

#include "Spaceship.h"
#include <iostream>
#include "Vector3.h"


using namespace std;

Spaceship::Spaceship()
{
	mName			= "DefaultName";
	mPosition		= Vector3(0.0f, 0.0f, 0.0f);
	mVelocity		= Vector3(0.0f, 0.0f, 0.0f);
	mFuelLevel		= 100;
	mDamage			= 0;
	
}

Spaceship::Spaceship(const string& name, 
					 const Vector3& pos, 
					 const Vector3& vel, 
					 int fuel, 
					 int damage)
{
	mName			= name;
	mPosition		= pos;
	mVelocity		= vel;
	mFuelLevel		= fuel;
	mDamage			= damage;
	
}

HumanShip::HumanShip(const string& name, 
					 const Vector3& pos, 
					 const Vector3& vel, 
					 int fuel, 
					 int damage)
{
	mName			= name;
	mPosition		= pos;
	mVelocity		= vel;
	mFuelLevel		= fuel;
	mDamage			= damage;
	
}


void Spaceship::landed()
{
	cout << mName <<" has landed" << endl;
}

void Spaceship::attacking()
{
	cout << mName << " is attacking" << endl;
}

void Spaceship::printStats()
{
	cout << "Name = " << mName << endl;
	cout << "Position = <";  
	cout << mPosition.mX << ", ";
	cout << mPosition.mY << ", ";
	cout << mPosition.mZ << ">" << endl;
	cout << "Velocity = <";
	cout << mVelocity.mX << ", ";
	cout << mVelocity.mY << ", ";
	cout << mVelocity.mZ << ">" << endl;
	cout << "Fuel Level = " << mFuelLevel << endl;
	cout << "Damage = " << mDamage << endl;
	
}

void HumanFighterShip::printStats()
{
	Spaceship::printStats();
	cout << "Missles = " << mNumMissles << endl;
}

HumanFighterShip::HumanFighterShip(const string& name, 
						 const Vector3& pos, 
						 const Vector3& vel, 
						 int fuel, 
						 int damage, 
						 int numMissles)

:HumanShip(name,pos, vel, fuel, damage)

{
	mNumMissles = numMissles;
}

void HumanFighterShip::fireLaserGun()
{
	cout << "Firing " << mName << " laser guns." << endl;
}

void HumanFighterShip::fireMissle()
{
	if(mNumMissles > 0)
	{
		cout << "Firing " << mName << " missles." << endl;

		mNumMissles--;
	}
	else
		cout << "Out of missles." << endl;
}
Code:
// Spaceship.h
#ifndef SPACESHIP_H
#define SPACESHIP_H

#include <iostream>
#include <string>
#include "Vector3.h"

using namespace std;

class Spaceship
{
public:
	Spaceship();
	Spaceship(
		const string& name,
		const Vector3& pos,
		const Vector3& vel,
		int fuel,
		int damage);

	void landed();
	void attacking();
	virtual void printStats();

protected:

	string mName;
	Vector3 mPosition;
	Vector3 mVelocity;
	int mFuelLevel;
	int mDamage;
};

class HumanShip : public Spaceship
{
public:
	HumanShip(
		const string& name,
		const Vector3& pos,
		const Vector3& vel,
		int fuel,
		int damage);
	
		
};

class HumanFighterShip : public HumanShip
{
public:
	HumanFighterShip(
		const string& name,
		const Vector3& pos,
		const Vector3& vel,
		int fuel,
		int damage,
		int numMissles);

		void fireLaserGun();
		void fireMissle();

		void printStats();
		
		
		
private:
		int mNumMissles;
};

#endif
I am sure that I am now using polymorphism, but correct me if I am wrong