2012-04-09 27 views
4

我在Xcode 4.2中编写了一个C++库xcode - “尝试使用已删除的函数” - 这是什么意思?

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

没有具体说明它在说什么功能。 我不想在这里发布课程代码,但是有没有人知道这个错误的含义?这是无处在谷歌被发现... :(

多谢

Roey

+1

好吧,这听起来像你试图使用(呼叫或取得地址)已删除的功能,但如果你不想发布代码,你不可能获得更多的帮助比在您发布的错误消息中。 – 2012-04-09 21:32:59

+0

那么,你基本上回答了我的问题与我的问题。我知道我试图使用删除的功能。这个错误告诉了我。但什么是删除的功能? – 2012-04-10 08:57:36

+0

这是我的观点。如果没有更多的上下文 - 代码 - 我们所能做的只是重新编写错误消息。如果你不知道被删除的函数是什么,那么就把它当作一个问题。 – 2012-04-10 09:13:36

回答

2

在C++ 11你可以声明功能删除:

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

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

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

错误告诉你,你的程序试图使用已删除的函数。您必须发布您获得的错误以获得更详细的帮助。

8

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

1

对我来说,它解决了它,当我通过“this”指针作为函数的参数。

3

要添加到卡洛斯的答案,我有正确数目的参数,但其中一个参数被引用传递。在变量周围添加ref()修复了它。看到here.