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

问题描述:

我为std::stack创建了一个堆栈扩展。Cannote创建对象,构造函数错误(用于对象初始化)

我创建了一个模板类,它的代码是在这里:

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; 
    } 

但是,当我将其初始化:

​​

它引发以下错误:

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

似乎操作员有一些问题。我确实试图创建一个运算符超载,但在我的尝试失败。

错误原因是什么?

+0

有没有涉案运营商?你只是错过了指定一个默认的构造函数。如果定义了复制构造函数,编译器将不会自动生成一个。 –

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

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

要么自己实现它,或者明确地默认情况下它:

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

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