问题标签 [deleted-functions]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1674 浏览

c++ - std::list 模板在其实例类型中是否需要复制构造函数(或等效项)?

我有一个类,每个实例都将被解释,创建和销毁受到严格监管。不允许随机移动、复制、临时 - 一旦通过专用函数创建,实例只能通过引用和指针“传递”。

为此,我删除了此类的复制构造函数和赋值运算符。

这些实例本应保存在 std::list 中,由 emplace_back() 创建,按需删除,并且从不打算移动。但是我收到有关已删除的复制构造函数的错误。

有没有办法使这项工作?我不需要手工雕刻的 std::list 的替代品?

0 投票
2 回答
691 浏览

c++ - 在交换优先级队列时尝试引用已删除的函数错误

我只是试图在两个优先级队列之间交换数据并得到这个错误。我也做了一些谷歌搜索,但仍然不知道这里有什么问题。

这是完整的错误消息:

错误 C2280 '< lambda_07efac20ebfa61cc8bb35aebd7d81f7c> &<< lambda_07efac20ebfa61cc8bb35aebd7d81f7c>>::operator =(const << lambda_07efac20ebfa61cc8bb35aebd7d81f7c>> &)':试图引用已删除的函数

0 投票
2 回答
3734 浏览

c++ - c++ 基类调用已删除或无法访问的函数

我有一个player变量,其中包含一个Resource从类派生Name的类向量ID

问题出在我编译代码时,编译过程中出现以下错误。

基本上我所做的Resources.cpp是,我有一个初始化玩家向量资源的函数。我对这个错误感到很奇怪,因为我没有在 StackOverflow 中四处寻找一些答案,但我没有看到一些有用的答案。这个链接很接近,但我不确定将 const 更改为非 const 值是否是我需要的。

这是代码。

在资源.h

在 IdClass.h

在 IdClass.cpp

这是我正在处理的一小部分代码。如果你们需要更多解释或代码,我可以在下面的评论中给出一些。


编辑1:看起来我忘了在输出之后放置错误代码。我也在使用 Visual Studio 2017

在 IdClass.h 中将变量从更改为const shortshort在我的一个类中创建链接器错误。

所以很明显,两个评论者链接的两个线程并没有那么有帮助。

我的目标是从 Resources.h 获取 id 值到 IdClass.h。

0 投票
1 回答
1480 浏览

c++ - 当不应调用构造函数时,复制参数会调用已删除的构造函数

这一直在 C++17 中工作,所以我从来没有想过,但为什么这段代码会尝试在 C++14 中调用移动构造函数?它不应该在函数参数中就地构造吗?这似乎不是 c++17 的问题,但不是用 c++14 编译的。

我看到的唯一解决方法是使foo参数成为右值,但是我可以做些什么来使这项工作foo在 C++14 中不使参数成为右值的情况下?


我的第一个想法是临时必须是构造函数才能传递给函数,但更令人惊讶的是,即使使用-fno-elide-constructors和取消删除移动构造函数和复制构造函数,它们似乎也没有被调用!这是 gcc 和 clang 中的错误吗?

有关错误,请参阅https://wandbox.org/permlink/f6sa5Rm3NxZLy5P1并查看奇怪的行为https://wandbox.org/permlink/Kh6CG4OVbUAjvEZz

0 投票
1 回答
383 浏览

c++ - unordered_map 中的 C++ 线程(无复制构造函数)

我正在尝试找出一种方法来从 c++ 中的 unordered_map 中获取线程。

但是,我得到std::thread::thread(const std::thread &) 试图引用已删除的函数

例子:

在这个代码示例中,我已经尝试过return map_.at(handle);return std::move(map_.at(handle);但这些似乎都不起作用。

如何从这个 unordered_map 中获取 std::thread ?

0 投票
1 回答
379 浏览

c++ - 为什么删除的复制构造函数不允许使用其他具有多态类型的构造函数?

我想知道为什么这个程序不能编译(在 msvc、gcc 和 clang 上的行为相同):

按照我的预期,删除的拷贝构造函数应该让其他ActionDecorator实例来构造ActionDecorator,因为它是Action的多态类型。相反,我必须将 ActionDecorator 实例显式转换为 Action&,因为编译器抱怨试图引用已删除的复制构造函数。是否有一些标准规则可以解释这种行为?

0 投票
1 回答
15852 浏览

c++ - std::ifstream,删除函数的使用

我正在尝试编写一种从.txt文件中获取数据的方法。

我需要从其他方法调用此方法。我在将参数传递给方法时遇到问题。

图书馆.h:

图书馆.cpp:

错误:

我想我在引用方面有点混乱。

0 投票
1 回答
134 浏览

c++ - 非法使用已删除功能

我有A级

当我试图获取存储在 unordered_map 中的 strcut A 时,如下所示:

我明白了

非法使用删除方法

错误。我的理解是这是一个复制构造,但我不知道为什么编译器在赋值之前调用默认构造函数。

0 投票
1 回答
60 浏览

c++11 - 强制仅移动语义

我对 C++11 比较陌生,尽管我使用以前的版本已经很多年了。这是强制对象只能移动的正确方法吗?

根据 Sebastian Redl 和 underscore_d 的评论编辑

断言也成立了……

这些通过 Visual Studio 2017。

0 投票
2 回答
499 浏览

c++ - C++ 删除了构造函数

假设我有这个结构:

那是来自cppreference。正如我从文档中了解到的那样,构造函数F被认为是已删除,因为它有一个引用变量,它什么都没有引用。所以不能F像这样声明一个类型的变量:F variableName;因为会有错误,例如: struct 中的未初始化引用成员F

我理解这一点,但是如果您甚至不能声明其类型的变量,我不明白这样的结构有什么好处。这种数据类型在某些特定情况下有用吗?