当前位置: 首页 > 知识库问答 >
问题:

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

申屠飞
2023-03-14

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

我创建了一个模板类,其代码如下:

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()’`

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

错误的原因是什么?

共有2个答案

郎喜
2023-03-14

Stack类缺少默认构造函数。

微生景胜
2023-03-14

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

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

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

Stack() = default; // Default implementation of default constructor
 类似资料:
  • 映射对构造函数没有限制或要求 (__init__ )类的方法。您可以自由地为您想要的函数要求任何参数,为ORM未知的实例分配属性,并且通常在编写Python类的构造函数时做您通常会做的任何其他事情。 sqlAlchemy ORM不调用 __init__ 从数据库行重新创建对象时。ORM的过程有点类似于Python标准库的 pickle 模块,调用低级 __new__ 方法,然后在实例上悄悄地恢复属

  • 生成类对象时,其成员可以用类的构造函数初始化。构造函数是与类同名的成员函数。程序员提供的构造函数在每次生成类对象(实例化)时自动调用。构造函数可以重载.提供初始化类对象的不同方法。数据成员应在类的构造函数中初始化或在生成对象之后设置其数值。 常见编程错误 6.7 类的数据成员只能在类定义中初始化。 常见编程错误 6.8 试图声明构造函数的返回类型和返回植是个语法错误。 编程技巧 6.5 适当时候(

  • 下面的代码不断抛出以下错误:Java Error Terminal Screen Snapshot 我试过很多在线修复,但似乎都不起作用。下面是我的代码,我已经注释了错误位置(发生在驱动程序主函数中) 注意:如果我将public static void main(String args[])更改为public void main(String args[]),那么代码可以正常编译,但是当我运行它时

  • 我正在使用tomee服务器运行我的javaEE应用程序。我写了一个过滤器,它注入一个对象。但是,该对象似乎没有被实例化: 以下是我的代码: Filter.java Faculty.java 我得到了一个NPE。以下是堆栈跟踪: 下面是正在使用的工件的版本: 我已经尝试在META-INF和WEB-INF中包含beans.xml,但我仍然看到NPE.Can有人让我知道我做错了什么?

  • 我在创建对象和参数化构造函数时遇到以下错误。 Main.java: 6:错误:构造函数Cipher类中的Cipher不能应用于给定类型 必需:无参数 找到:int 原因:实际参数列表和正式参数列表的长度不同 这是我的文件的样子

  • 我正在从一个教程中重构下面的代码。当我< s >运行编译它时,我得到以下错误: Vierbeiner类中的构造函数Vierbeiner不能应用于给定类型;必需:java.lang.找到字符串:无参数原因:实际参数列表和正式参数列表长度不同 我的理解是,发生这个错误是因为父类Vierbeiner有一个需要字符串参数的构造函数,而没有一个不需要参数的构造函数。我不明白的是,为什么我在没有创建Hund类