8

我正在 Xcode 4.2 中编写一个 C++ 库

我的一个类无法编译并出现此错误:“尝试使用已删除的函数”。

没有具体说明它在谈论什么功能。我不想在这里发布课程代码,但是有人知道这个错误是什么意思吗?在 Google 上找不到它... :(

谢谢一堆

罗伊

4

5 回答 5

18

我对线程(C++ 11)有类似的消息。事实证明,我将错误数量的参数传递给线程调用的函数,因此线程没有找到任何合适的函数并给出了该消息。

于 2014-09-03T16:46:47.140 回答
5

为了补充卡洛斯的答案,我有正确数量的参数,但其中一个参数是通过引用传递的。在变量周围添加 ref() 为我修复了它。见这里。

于 2016-02-24T13:02:29.587 回答
4

在 C++11 中,您可以将函数声明为已删除:

struct Foo {
    Foo(const Foo &) = delete;
};

尝试使用这样的功能是错误的。这样做的目的是,在这个例子中,这种类型的复制构造是不可能的。这是 C++11 之前使用的不可复制技巧的更直接替代。

此外,C++ 规范中有一些规则会导致成员函数被隐式删除。

该错误告诉您您的程序尝试使用已删除的功能。您必须发布您收到的错误以获得更详细的帮助。

于 2012-04-09T21:39:42.623 回答
1

对我来说,当我将“this”指针作为参数传递给函数时,它解决了这个问题。

于 2015-05-17T03:32:45.030 回答
0

For me, the issue was that one of the arguments was a pointer, and I passed NULL directly as an argument. To solve this, I simply created a new NULL pointer which I passed to the function as an l-value instead.

于 2018-05-05T16:18:27.353 回答