xcode - “尝试使用已删除的功能” - 这是什么意思?

时间:2012-04-09 21:26:34

标签: c++ xcode4.2 llvm-3.0

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

我的一个类不会使用此错误进行编译:“尝试使用已删除的函数”。

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

感谢一堆

Roey

5 个答案:

答案 0 :(得分:13)

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

答案 1 :(得分:3)

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

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

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

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

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

答案 2 :(得分:3)

要添加到Carlos的答案,我有正确数量的参数,但其中一个参数是通过引用传递的。在变量周围添加ref()为我修复它。见here.

答案 3 :(得分:1)

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

答案 4 :(得分:0)

对我来说,问题是其中一个参数是一个指针,我直接将NULL作为参数传递。为了解决这个问题,我只是创建了一个新的NULL指针,我将其作为l值传递给函数。