Когда мы получаем сообщение об ошибке Явно определяем отсутствующий оператор присваивания копии .., нужно ли нам определять только оператор присваивания? - PullRequest
0 голосов
/ 25 мая 2020

Я получаю следующую ошибку от SonarQube для моего приложения C ++ в ~ TestQueue (); деструктор Явно определите отсутствующий оператор присваивания копии, чтобы он не был неявно предоставлен.

Чтобы устранить эту ошибку, я явно определил оператор присваивания:

Достаточно ли определить только оператор присваивания согласно сообщению об ошибке? или мне нужно также определить конструктор копирования, конструктор перемещения и оператор присваивания перемещения?

class TestMessage
{
public:
    TestMessage();
    ~TestMessage() {}
};

class TestQueue
{
private:
    std::mutex mutex_;
    std::queue<TestMessage*> tstQueue;

public:
    ~TestQueue();
    TestQueue();
    TestQueue& operator= (const TestQueue &tQueue);
};

TestQueue::TestQueue()
{
}

TestQueue::~TestQueue()
{
    if (!tstQueue.empty())
    {
        while (tstQueue.size())
        {
            tstQueue.pop();
        }
    }
}

TestQueue& TestQueue::operator = (const TestQueue &tQueue)
{
    if (this == &tQueue)
        return *this;

    tstQueue = tQueue.tstQueue;

    return *this;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...