首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

来自Visual C++的奇怪错误: promise类型没有默认构造函数

来自Visual C++的奇怪错误: promise类型没有默认构造函数

这个错误通常是由于在使用promise类型时,没有为其提供合适的构造函数而导致的。在C++中,promise是用于线程间通信的一种机制,用于在一个线程中生成一个值,然后在另一个线程中获取这个值。

promise类型通常使用std::promise类来创建,其构造函数有多个重载形式,可以接受不同的参数类型。然而,如果没有为promise类型提供默认构造函数,那么在使用promise时就会出现这个错误。

解决这个错误的方法是,确保在创建promise对象时为其提供合适的参数。根据具体的使用场景,可以选择合适的构造函数重载形式。如果不确定应该使用哪个构造函数,可以查看相关的文档或示例代码来获取帮助。

对于这个问题,如果涉及到使用promise来实现异步操作,可以考虑使用C++标准库中的std::async、std::future和std::promise来进行线程间通信和异步操作。这些类提供了更高级和更方便的方式来处理线程间的数据传递和任务执行。

腾讯云提供了丰富的云计算产品,其中包括服务器托管、容器服务、弹性伸缩等,可以根据实际需求选择适合的产品进行开发和部署。具体的产品介绍和相关链接地址可以参考腾讯云的官方文档。

请注意,以上回答仅针对问题中描述的奇怪错误,如果还有其他相关问题,请提供详细信息以便进一步帮助解决。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【Example】C++ 标准库多线程同步及数据共享 (std::future 与 std::promise)

共享状态: 补充一些与 std::future 相关的枚举类型,参考自Microsoft Docs: future_errc 枚举 : 为 future_error 类报告的所有错误提供符号名称。...【注:此处应额外补充 alloc 构造函数】 3,std::promise 与 std::future 的状态相关联,它负责将共享值存入并给 std::future 访问使用,值类型也有可能是void、...4,std::promise 在作为使用者的异步线程当中,应当注意共享变量的生命周期、是否被 set 的问题。如果没有共享值没有被 set,而异步线程却结束,future 端会抛出异常。...7,std::promise 空类型创建是可以的,任何 set 函数不接受任何形式的参数,此操作用于传递通知,通知与其关联的 std::future 端解除阻塞。...2,std::packaged_task 可以默认无参构造,但此时没有任何作用,执行会发生异常,valid() 值为 false。

1.6K30

Visual C++ 中的重大更改

在 Visual Studio 2015 中的 Visual C++ 中,编译器将此视为用户定义的文字,但由于没有定义匹配的用户定义的 _x 文本,它将报告错误。           ...早期版本的编译器生成了匿名联合的显式构造函数和析构函数。 这些在 Visual Studio 2015 中的 Visual C++ 中已删除。           ...但在 Visual Studio 2015 中的 Visual C++ 中,不会调用构造函数和析构函数。 编译器会对关于此行为的更改发出警告。           ...复制构造函数 在 Visual Studio 2013 和 Visual Studio 2015 RC 中,如果该类具有用户定义的移动构造函数,但没有用户定义的复制构造函数,则编译器生成类的复制构造函数...如果库是第三方库并且第三方库的源不可用,则应请求来自第三方更新后的二进制文件,或者将你对此库的用法封装到单独的 DLL(使用旧版 Visual C++ 或库编译的)。

4.8K00
  • Visual C++ 中的重大更改

    在 Visual Studio 2015 中的 Visual C++ 中,编译器将此视为用户定义的文字,但由于没有定义匹配的用户定义的 _x 文本,它将报告错误。           ...早期版本的编译器生成了匿名联合的显式构造函数和析构函数。 这些在 Visual Studio 2015 中的 Visual C++ 中已删除。           ...但在 Visual Studio 2015 中的 Visual C++ 中,不会调用构造函数和析构函数。 编译器会对关于此行为的更改发出警告。           ...复制构造函数 在 Visual Studio 2013 和 Visual Studio 2015 RC 中,如果该类具有用户定义的移动构造函数,但没有用户定义的复制构造函数,则编译器生成类的复制构造函数...如果库是第三方库并且第三方库的源不可用,则应请求来自第三方更新后的二进制文件,或者将你对此库的用法封装到单独的 DLL(使用旧版 Visual C++ 或库编译的)。

    5.3K10

    【C++】构造函数初始化列表 ① ( 类对象作为成员变量时的构造函数问题 | 构造函数初始化列表语法规则 )

    ; 此时使用 默认无参构造函数 初始化 B , 就会报错 ; 在一个类中 , 其成员变量是 带有参构造函数 的类型 , 这种情况下没有调用 有参构造函数的机会 , 此时就会出现 编译报错情况 ; 在下面的代码中...默认构造函数 或重载解决不明确,因此已隐式删除函数 ; class B { public: int m_age; // 年龄 A m_a; // A 类型成员变量 }; 解决上述问题的方案...就是 C++ 中的 构造函数 初始化列表 ; 2、错误代码示例 代码示例 : #include "iostream" using namespace std; class A { public: /...public: int m_age; // 年龄 A m_a; // A 类型成员变量 }; int main() { // 通过 B 的默认无参构造函数初始化 B 对象 B b;...”不具备相应的 默认构造函数 或重载解决不明确,因此已隐式删除函数 1>D:\002_Project\006_Visual_Studio\HelloWorld\HelloWorld\hello_world.cpp

    67730

    这些 JavaScript 细节,你知道不?

    此外还有一些看起来奇怪但实际上解释得通的例子: parseInt(0.000008); // 0 ("0" 来自于 "0.000008") parseInt(0.0000008); // 8 ("8"...由于一个 Promise 链仅仅是连接到一起的成员 Promise,没有把整个链标识为一个个体的实体,这意味着没有外部方法可以用于观察可能发生的错误。...如果构建了一个没有错误处理函数的 Promise 链,链中任何地方的任何错误都会在链中一直传播下去,直到在某个步骤注册拒绝处理函数。...还有,这个 Promise 链中的任何一个步骤都没有显式地处理自身错误。...遗憾的是,很多时候并没有为 Promise 链序列的中间步骤保留的引用。因此,没有这样的引用,你就无法关联错误处理函数来可靠地检查错误。

    45730

    Nodejs Serialport文档翻译

    npm install serialport --build-from-source 这不是node-gyp说明的一部分,但是有些时候它会帮助你,如果你在visual studio创建了一个c++项目,...当autoOpen选项没有失效的时候,构造函数的 openCallback 被传递给.open()。如果你已经将它关闭,callback回调会被忽视。 .open()函数需要一个在串口打开后的回调。...参数错误抛出一个TypeError对象。当这些函数被叫做无效参数时,你将会看见这些。 如果没有回调被提供,运行时错误提供Error对象给函数回调或者发出一个error event。....用无效的参数或者无效的选项构造一个新的串口时,会抛出错误。..., 或者一个接受buffer构造函数的类型 (除了字节数组或者一个字符串).

    2.7K30

    【C++】泛型编程 ⑧ ( 类模板继承语法 | 普通类 继承 类模板语法 | 类模板 继承 类模板语法 | 继承类模板必须指定具体的类型参数列表 | 继承 类模板 必须重写构造函数 )

    类型参数列表 的 数据类型 ; 此时 , 在继承时 , 被继承的 类模板 必须 声明 类型参数列表 , 将具体的泛型类型写在尖括号中 , C++ 编译器需要知道 具体的 数据类型 是什么 , 才能生成..., 调用 类模板 具体类 的构造函数 , 如果 子类 继承 类模板父类 , 如果 子类没有实现 构造函数 , // 类模板 继承时 , 需要具体化 类模板 // 也就是 指定 类模板 的 类型参数列表...\HelloWorld\Test.cpp(22,1): message : “Son::Son(void)”: 由于 基类“Father”不具备相应的 默认构造函数 或重载解决不明确,因此已隐式删除函数...{ public: // 类模板 子类 必须重写构造函数 // 在 子类 构造函数中 , 调用 类模板 具体类 的构造函数 // 否则会报错 Son(int a = 10...中的 泛型 T , 与 Father 中的 T 没有任何关系 , 也就是说 Son2 中的 泛型类型 T 相当于 普通类 继承 类模板 中的 具体类型 int , Father 类中的 泛型 T 已经被覆盖掉了

    1.2K31

    【C++】构造函数调用规则 ( 默认构造函数 | 默认无参构造函数 | 默认拷贝构造函数 | 构造函数调用规则说明 )

    一、默认构造函数 C++ 类中 2 种特殊的构造函数 , 分别是 : 默认无参构造函数 : 如果 C++ 类中 没有定义构造函数 , C++ 编译器会自动为该类提供一个 " 默认的无参构造函数 " ,...; 1、默认无参构造函数 如果 C++ 类中 没有定义构造函数 , C++ 编译器会自动为该类提供一个 " 默认的无参构造函数 " , 函数体为空 , 不做任何操作 ; 没有定义构造函数 : 如果...没有为 C++ 类定义 构造函数 , C++ 编译器 将自动为该类 生成一个默认的无参构造函数 ; 定义了构造函数 : 如果为 C++ 类 定义了其他类型的构造函数 ( 有参构造函数 / 无参构造函数...和 默认拷贝构造函数 : 如果 C++ 类中 没有定义 构造函数 时 , C++ 编译器 会提供 默认的 无参构造函数 和 默认的 拷贝构造函数 ; 提供 默认拷贝构造函数 : 如果 C++ 类中 ,...默认的无参构造函数 和 默认的拷贝构造函数 ; 使用 Student s; 代码 创建对象 , 报错 “Student”: 没有合适的默认构造函数可用 ; 说明 C++ 编译器没有为该类生成 默认的无参构造函数

    1.3K30

    C++ 协程篇一:co_yield和co_return

    这些既不是“好”也不是“坏”的设计原则,由于 C++ 没有垃圾收集器,也没有运行时系统。这也导致C++ 协程有着陡峭的学习曲线。...---- Promise类型 在常规函数调用中,调用者和被调用者协作(根据调用约定)为堆栈帧保留一些内存,例如保存函数参数、局部变量、返回地址和返回值。被调用者返回后,栈帧就不再需要了。...CustomizedHelper对象被称为“promise”(但它的类型不是std::promise )并且 CustomizedHelper类型通常是RType::promise_type,RType...例如,我们的协程主体说co_yield x 和CYType (变量x的类型) 是int类型,所以我们的 promise 类型需要有一个yield_value函数带int参数....奇怪的是,info breakpoints还将断点放在_Z6sourcei.actor(_Z6sourcei.frame *)函数中,大概是普通source(int)函数的编译器转换版本。

    2.6K30

    检查JavaScript文件_TypeScript笔记18

    里存在大量惯用“模式”,所以在默认类型方面相当宽松,主要表现为 3 点: 函数参数默认可选 未指定的类型参数默认any 类型宽松的对象字面量 函数参数默认可选 .js文件里所有函数参数都默认可选,所以允许实参数量少于形参...(somebody = 'John Doe')表明somebody可选,类型系统会综合这些信息进行推断 未指定的类型参数默认any JavaScript 没有提供用来表示泛型参数的语法,因此未指定的类型参数都默认...: React.ReactNode; }> 因为在.js里没有指定泛型参数的类型时,默认为any,所以不报错。...对于没在构造函数中定义,或者构造函数中类型为undefined或null(此时为any)的属性,其类型为所有赋值中右侧值类型的联合 定义在构造函数中的属性都认为是一定存在的,其它地方(如成员方法)出现的都当作可选的...类声明中未出现的属性都是未定义的,访问就报错 构造函数等价于类 另外,在 ES6 之前,JavaScript 里用构造函数代替类,TypeScript 类型系统也能够“理解”这种模式(构造函数等价于

    2.4K50

    轻松了解一下es6中的异步流程控制

    ){ resolve() } ); Promise(..)构造器接收一个单独的函数(pr(..))...第二个函数(如果存在的话)被看作是promise被明确拒绝时,或者任何错误/异常在解析的过程中被捕捉到时要调用的处理器。...如果这两个参数值之一被省略或者不是一个合法的函数 —— 通常你会用null来代替 —— 那么一个占位用的默认等价物就会被使用。默认的成功回调将传递它的完成值,而默认的错误回调将传播它的拒绝理由。...Thenable基本上是一个一般化的标签,标识着任何由除了Promise(..)构造器之外的其他系统创建的类promise值。从这个角度上讲,一个thenable没有一个纯粹的Promise那么可信。...这种“让出一个promise推进generator”的模式将会如此常见和如此强大,以至于ES6之后的下一个版本的JavaScript几乎可以确定将会引入一中新的函数类型,它无需运行工具就可以自动地执行。

    95810

    Visual Studio 2017 15.8 版发行说明

    我们进行此更改,使该功能与 C# 处理 ref 返回值的方式保持一致。 当类型批注指示现在使用 ref 返回值的隐式取消引用时,将用到错误消息。...你便可执行 .NET Core 上程序集重定向的等效操作。 修复了以下 bug:忽略了尝试在内联函数上使用动态调用时用到的错误消息。 错误消息现将传送。...之后为成员显示 XML 文档的说明工具提示在 10 秒后不再超时。 修复了无法在对象构造函数参数中设置断点这一 bug。 修复了重命名符号属于泛型参数时将进行复制这一 bug。...现在为构造函数调用站点上的类型提供程序静态参数生成签名帮助工具提示(由 Vasily Kirichenko 提供)。...源链接允许在编译过程将可执行的或库的原始源代码相关信息嵌入 PDB。 调试时,如果程序终止执行,控制台窗口现将默认保持打开状态(类似于在没有调试器的情况下运行程序)。

    8.2K10

    C语言中void具体有什么作用

    大家好,又见面了,我是你们的朋友全栈君。1.概述 许多初学者对C/C++语言中的void及void指针类型不甚理解,因此在使用上出现了一些错误。...林锐博士《高质量C/C++编程》中提到:“C++语言有很严格的类型安全检查,不允许上述情况(指函数不加类型声明)发生”。...可是编译 器并不一定这么认定,譬如在Visual C++6.0中上述add函数的编译无错也无警告且运行正确,所以不能寄希望于编译器会做严格的类型检查。...因此,为了避免混乱,我们在编写C/C++程序时,对于任何函数都必须一个不漏地指定其类型。如果函数没有返回值,一定要声明为void类 型。这既是程序良好可读性的需要,也是编程规范性的要求。...如果memcpy和memset的参数类型不是void *,而是char *,那才叫真的奇怪了!这样的memcpy和memset明显不是一个 “纯粹的,脱离低级趣味的”函数!

    2K20

    C++学习总结1——几个基本概念

    对于未初始化的变量,除了用作赋值操作的左操作数,用于其他用途都是没有意义的。 系统默认初始化规则 所谓系统默认初始化规则,就是在声明变量时未对其进行初始化的情况下,编译器对其赋值的一套规则。...对于内置类型和类类型,规则不同;对于函数内变量和函数外变量,定义规则也不同。 内置类型变量 内置类型指int,float,char和void等基本类型(在C++中,string不是内置类型)。...类类型变量 对于类类型变量,不论其是在函数内还是函数外定义,只要有默认构造函数,则系统就会自动调用其默认构造函数,如 #include using namespace std;...string out; int main() { string in; return 0; } 因为string类有默认构造函数,所以out和in都被自动初始化为””。...如果没有默认构造函数,则定义时必须提供显式的初始化式。因为C++中类会自动地增加一个默认构造函数,所以这种情况比较少见。 参考内容 1.

    55120

    【Example】C++ 接口(抽象类)概念讲解及例子演示

    C++ 和 Java 不同的是,C++ 没有 interface 关键字。对于很多新手来说,C++ 当中接口的概念不容易像 Java 当中那样被理解。...首先要讲两个概念: 一、纯虚函数 (Pure Virtual Function): 1,纯虚函数只有函数名、参数、返回值类型。...4,抽象类默认存在隐式的构造函数,但是不能将构造函数定义为纯虚函数。(因为无意义) 5,析构函数可以定义成纯虚函数,相应的派生类也要给出析构函数的实现。...6,如果派生出来的子类没有实现父抽象类当中的所有纯虚函数,那子类仍然是抽象类。 所以,特点就很显而易见了,有这么一个“类”,它不能被实例化,只能被继承,而继承它的派生类必须要重写它声明的所有函数。...】C++ 标准库 std::thread 与 std::mutex 【Example】C++ 标准库多线程同步及数据共享 (std::future 与 std::promise) 【Example】C+

    1.8K20

    使用 TypeScript“严格”模式进行类型严格编码

    工作经历回顾大约两周前,我决定解决一个与我之前做过的很多工作不相关的问题。一些背景信息,我在 C 和 C++ 方面有丰富的经验,这些语言通常是类型严格的。...简单地意味着在类中声明了某些内容,但是不可为空,因此必须在构造函数中赋值。...null,因此在构造函数中不需要分配任何内容。...由于某种奇怪的原因,DOM 的引用没有被链接,这意味着由于需要 DOM 引用来获取对象的位置,插件的特定功能无法进行测试。...其中很多都是非常简单的更改,无论是使某些内容不可为空并在构造函数中分配它们,还是修复某个函数的格式。这个 PR 还没有被合并,但这很可能是由于测试运行的问题,审阅者表示他们会对此进行详细调查。

    25810

    从实现装饰者模式中思考C++指针和引用的选择

    作为一个经典的设计模式,本身并没有太多要说的内容。但是在我尝试使用C++去实现这个模式的实例的时候,出现了一些看似无关紧要但是却引人深思的问题。 首先,我想简单介绍一下这个实例的含义。...以上的说明如果还不够清楚的话,下边展示具体的实现代码。这里就需要考虑cake成员的类型问题,一般使用指针类型可能更符合C++的编程习惯。...对象和Cake与Decorator不是一个类型,但是编译器或许默认的匹配继承层次最近的类型!...然后我们按照这样要求重写了代码,执行了程序,在期待结果的那一刻看到的是“装饰过花的奶油蛋糕”……或许此时的你都会感到灰心,但是你还是依然的坚强的按下了F5单步跟踪,结果你发现拷贝构造函数并没有被调用!...其实并不是,佛家说:“今日之果皆来自昨日之因”,一切的一切都是由于我们使用了本以为毫无悬念的引用导致的!如果使用指针就不可能发生和拷贝构造函数冲突的问题,也不会导致编译器优化的问题!

    1.1K100

    C++中使用vs2015和g++对new开辟的堆内存是否初始化的分析

    (10){} #endif }; int main( int argc, char **argv ) { A *obj1 = new A; //如果类A中没有自定义的构造函数(调用编译器合成的默认构造函数...i_value << "]" << endl; delete obj2; cout << "----------------" << endl; //int类型中没有默认构造函数...i_arra = new int[20]; printf( "new int[10]=[%d]\n", *(i_arra+10) ); delete i_arra; //int类型中没有默认构造函数...对比类A的对象obj1和obj2的数据成员的输出值可以得出结论:如果类A中没有自定义的构造函数,那么new A和new A()会调用编译器合成的默认构造函数,但是只有new A()会对这块内存(各个成员变量...对于对象类型(例如string以及自定义的类对象等)在使用new开辟申请内存空间时,如果没有自定义构造函数,那么使用new data_type[numbers]和使用new data_type[numbers

    12110
    领券