Constructor de copia de miembro de clase Const

#include "booking.h"
#include <iostream>
booking::booking (  const std::string p_title,  const std::string p_notice,  const category p_category,  const person p_person,  const booking::Type p_type,  const double p_value ) :
m_type{ p_type },
m_title{ p_title },
m_notice{ p_notice },
m_person{ p_person },
m_category{ p_category },
m_value { p_value }
{
    std::cout << "Booking was created" << std::endl; // Debug Message
}

Estos son los archivos (todo lo que es necesario saber en mi opinión)

#pragma once
#include <string>
#include "person.h"
#include "category.h"
class booking
{
public:
    enum Type { TYPE_REVENUE, TYPE_EXPENDITURE };
    booking ( const std::string p_title, const std::string p_notice, const category p_category, const person p_person, const booking::Type p_type, const double p_value ); //Basic Constructor
    ~booking();
    Type GetType ( );
    std::string GetTitle ( );
    std::string GetNotice ( );
    category GetCategory ( );
    double GetValue ( );

private:
     Type m_type;
     std::string m_title;
     std::string m_notice;
     category m_category;
     person m_person;
     double m_value;

};

Si pongo uno de los miembros de la clase (como m_type o el valor doble, no importa cuál) const, arroja el siguiente error:

Fehler 1 error C2280:booking &booking::operator =(const booking &) : intentando hacer referencia a una función eliminada C: \ Archivos de programa (x86) \ Microsoft Visual C ++ Compiler Nov 2013 CTP \ include \ utility 53

No entiendo por qué el compilador se queja del constructor de copias y cuál es básicamente el problema.

Respuestas a la pregunta(4)

Su respuesta a la pregunta