I'm trying to make Ticket Reservation System. However, I have an error about C2280.
On TicketReservation, I'm adding TicketManagers with std::vector.
It works fine without TicketResetvation, but with it, error uccred.
I found when error occured, but I don't know how to fix it.
void TicketReservation::addManager(TicketManager tm)
{
    std::cout << tm.getName() << std::endl;   // works.
    managers.push_back(tm);   // error occured.
}
And the error:
C2280 std::unique_ptr<Ticket,std::default_delete<Ticket>>::unique_ptr(const std::unique_ptr<Ticket, std::default_delete<Ticket>> &)'
1>        with
1>        [
1>            _Alloc=std::allocator<std::unique_ptr<Ticket,std::default_delete<Ticket>>>,
1>            _Ty=std::unique_ptr<Ticket,std::default_delete<Ticket>>,
1>            _Objty=std::unique_ptr<Ticket,std::default_delete<Ticket>>
1>        ]
1>        with
1>        [
1>            _Alloc=std::allocator<std::unique_ptr<Ticket,std::default_delete<Ticket>>>,
1>            _Ty=std::unique_ptr<Ticket,std::default_delete<Ticket>>,
1>            _Objty=std::unique_ptr<Ticket,std::default_delete<Ticket>>
1>        ]
1>        with
1>        [
1>            _Ty=std::unique_ptr<Ticket,std::default_delete<Ticket>>
1>        ]
I tried with managers.emplace_back(tm.getName(), tm.getNumber()); but same error.
Also I tried create every default constructor, but same error.
I don't know what is wrong..
Thank you for your help.
Here's my code :
#include <iostream>
#include "TicketReservation.h"
#include "TicketManager.h"
int main()
{
    TicketReservation tickets;
    tickets.addManager(TicketManager("Test A", 10));
    tickets.addManager(TicketManager("Test B", 5));
    tickets.addManager(TicketManager("Test C", 10));
...
}
#pragma once
class Ticket
{
protected:
    int number;     
    static int fNumber; 
    double price;       
public:
    Ticket() = delete;
    Ticket(const double& price);
    virtual ~Ticket();
...
};
#pragma once
#include "Ticket.h"
#include <vector>
#include <string>
#include <memory>
class TicketManager
{
private:
    std::string m_name;         
    int totalNumber;            
    std::vector<std::unique_ptr<Ticket>> ticket;
public:
    TicketManager() = delete;
    ~TicketManager();
    TicketManager(const std::string& name, const int& number);
    TicketManager(const TicketManager& tm);
    TicketManager(TicketManager&& tm) noexcept;
...
};
std::ostream& operator<<(std::ostream& out, const TicketManager& manager);
#include "TicketManager.h"
#include <iostream>
#include "AdvancedTicket.h"
#include "GeneralTicket.h"
TicketManager::~TicketManager()
{
}
TicketManager::TicketManager(const std::string& name, const int& number)
    : m_name(name), totalNumber(number)
{
}
TicketManager::TicketManager(const TicketManager& tm)
    : TicketManager(tm.getName(), tm.getNumber())
{
    for (auto it = tm.ticket.begin(); it < tm.ticket.end(); it++) {
        this->ticket.push_back(*it);
    }
}
TicketManager::TicketManager(TicketManager&& tm) noexcept
    : m_name(tm.m_name), totalNumber(tm.totalNumber)
{
}
...
Aucun commentaire:
Enregistrer un commentaire