我是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
答案 0 :(得分:0)
您收到错误,因为您错误地使用了标准库。有时会出现很多页错误,但是你的代码错误会出现在某个地方。这是使用C ++的众多挑战之一 - 解密这些错误消息并弄清楚你做错了什么。使用标准库越适应,就越能搞清楚这些错误。这是在编译时将事情做好的所有部分,因此您不必在运行时处理这些错误。运行时错误可能难以解决多个等级。