最佳答案
这是我的示例代码:
#include <iostream>
#include <string>
using namespace std;
class MyClass
{
string figName;
public:
MyClass(const string& s)
{
figName = s;
}
const string& getName() const
{
return figName;
}
};
ostream& operator<<(ostream& ausgabe, const MyClass& f)
{
ausgabe << f.getName();
return ausgabe;
}
int main()
{
MyClass f1("Hello");
cout << f1;
return 0;
}
如果我注释掉 #include <string>
,我不会得到任何编译器错误,我猜是因为它是通过 #include <iostream>
包含的。如果我在 Microsoft VS 中使用 “右击-> 转到定义”,它们都指向 xstring
文件中的同一行:
typedef basic_string<char, char_traits<char>, allocator<char> >
string;
但是当我运行我的程序时,我得到一个异常错误:
在 OperatorString.exe: 0xC00000FD: 栈溢出(参数: 0x0000001,0x01202FC4)中的0x77846B6E (ntdll.dll)
知道为什么在注释 #include <string>
时会出现运行时错误吗? 我使用的是 VS2013Express。