【问题标题】:Resolving errors in std headers when using std methods/classes incorrectly错误使用 std 方法/类时解决 std 标头中的错误
【发布时间】:2016-04-05 01:09:16
【问题描述】:

我是 C++ 新手,在使用 std 模板化类/容器/方法时经常遇到编译时错误。

大多数时候,错误显示在我不直接包含的一些 std 头文件中。此外,违规行总是在我不直接调用的某些方法中。

所以我不知道我的代码的哪一行最终会导致该错误。换句话说,我无法确定导致错误的调用堆栈(如果在这种情况下可以这样调用)。

在确定出现此类错误的违规代码时,是否可以使用有效的“调试”过程?

这是此类错误的一个示例。我会以某种方式解决这个错误,所以我对这个特定的错误不感兴趣,而是对诸如此类问题的更一般的解决方案感兴趣。

错误 C2280 'MyNamespace::MyClass &MyNamespace::MyClass::operator =(const MyNamespace::MyClass &)': 试图引用已删除的函数 MyLib c:\program files (x86)\microsoft visual studio 14.0\vc\include\utility 53

【问题讨论】:

  • 当然可以,通常会有更多信息,例如您所指的内容,例如像 std::ofstream 或类似的已删除复制构造函数。
  • 经常编译,这样你就知道是哪个改动引入了错误

标签: c++ c++11 std


【解决方案1】:

您收到错误是因为您错误地使用了标准库。有时它有很多页的错误,但您的代码错误会出现在某个地方。这是使用 C++ 的众多挑战之一——解扰这些错误消息并找出你做错了什么。你越适应使用标准库,你就越能更好地找出这些错误。这都是在编译时正确处理的一部分,因此您不必在运行时处理这些错误。运行时错误可能更难解决。

【讨论】:

    猜你喜欢
    • 2015-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多