无法创建对象,构造函数错误(用于对象初始化)

Cannote create an object, constructor error (for object initialization)

我已经为 std::stack 创建了一个 Stack 扩展。

我创建了一个模板class,其代码在这里:

template<class _StackType>
class Stack
{
    std::stack<_StackType> data_container;
    mutable std::mutex M;
public :

    Stack(const Stack& other)
    {
        std::lock_guard<std::mutex> lock(other.M);
        this->data_container = other.data_container;
    }

但是当我初始化它时:

Stack<int> myStack;

它抛出以下错误:

 error: no matching function for call to `‘Stack<int>::Stack()’`

操作员好像有点问题。我确实尝试创建一个运算符重载,但我的尝试失败了。

错误原因是什么?

您的 Stack class 缺少默认构造函数。

您没有为 Stack 指定默认构造函数,因此无法创建变量 myStack

通常情况下,默认构造函数是隐式的,但在您的情况下,因为您指定了复制构造函数,所以它被删除了。

要么自己实现,要么显式默认:

Stack() = default; // Default implementation of default constructor