first time posting. Thanks in advance for your correspondence and patience.
I need to prevent the copy of an object, if that object already exists in my array.
I am beyond my depth as how to compare these values and prevent copy.
My next step is trying: unique_ptr or shared_ptr or compare() or iterator.
NO VECTORS.... I NEED TO ALLOCATE AND DE-ALLOCATE EVERYTHING.
ConfirmationSender.h
class ConfirmationSender {
    Reservation** ppCon;
    size_t cCnt;
public:
    ConfirmationSender();
    ~ConfirmationSender();
    ConfirmationSender& operator+=(const Reservation& res);
    // ConfirmationSender& operator-=(const Reservation& res);
    void display(std::ostream& os) const;
};
std::ostream& operator<<(std::ostream& os, const ConfirmationSender& obj);
ConfirmationSender.cpp
ConfirmationSender& ConfirmationSender::operator+=(const Reservation& res) {
    if (cCnt == 0) {
        ++cCnt;
        ppCon = new Reservation* [cCnt];
        ppCon[0] = new Reservation(res);
    }
    else {
        Reservation** temp1 = nullptr;
        temp1 = new Reservation * [cCnt];
        for (size_t i = 0; i < cCnt; i++) {
            temp1[i] = ppCon[i];
        }
        ++cCnt;
        delete[] ppCon;
        ppCon = new Reservation * [cCnt];
        for (size_t i = 0; i < cCnt - 1; i++) {
            ppCon[i] = temp1[i];
        }
        ppCon[cCnt - 1] = new Reservation(res);
        delete[] temp1;
        temp1 = nullptr;
        /*
        NEED TO IMPLEMENT CONDITION
        SO THE VALUE I COPY 
        CANNOT BE A VALUE ALREADY EXISTING IN ARRAY
        */
    }
    return *this;
}
class Reservation {
    std::string id, name, email;
    int seats, day, hour;
public:
    Reservation();
    Reservation(const std::string& m_res);
    void display(std::ostream& os) const;
};
std::ostream& operator<<(std::ostream& os, const Reservation& obj);
Reservation::Reservation() {
    seats = 0;
    day = 0;
    hour = 0;
};
Reservation::Reservation(const std::string& m_res) {
    std::string t_str;
    t_str = m_res;
    t_str.erase(std::remove(t_str.begin(), t_str.end(), ','), t_str.end());
    istringstream iss(t_str);
    std::string buffer = {};
    static int count = 0;
    while (iss >> buffer) {
        switch (count % 6) {
            case 0: id = buffer; break;
            case 1: name = buffer; break;
            case 2: email = buffer; break;
            case 3: seats = atoi(buffer.c_str()); break;
            case 4: day = atoi(buffer.c_str()); break;
            case 5: hour = atoi(buffer.c_str()); break;
        }
        count++;
    }
    buffer.clear();
    iss.str(std::string());
}
void Reservation::display(std::ostream& os) const {
    string menu_type;
    if (hour >= 6 && hour <= 9) { menu_type = "Breakfast"; }
    else if (hour >= 11 && hour <= 15) { menu_type = "Lunch"; }
    else if (hour >= 17 && hour <= 21) { menu_type = "Dinner"; }
    else { menu_type = "Drinks"; }
    os << "Reservation "
        << id << " "
        << name << " <"
        << email << "> "
        << menu_type << " on day "
        << day << " @ "
        << hour << ":00 for "
        << seats << " people." << '\n';
}
std::ostream& operator<<(std::ostream& os, const Reservation& obj) {
    obj.display(os);
    return os;
}
main.cpp
// Confirmation Sender
{
    std::cout << "CS: Testing Operators\n";
    std::cout << "==========================\n";
    sender1 += *ppReservations[5];
    sender1 += *ppReservations[16];
    sender1 += *ppReservations[16];
    // THE SECOND [16] SHOULD NOT BE COPIED BY ADDITION OPERATOR
    std::cout << sender1;
    std::cout << "==========================\n\n";
}
 
    