이것은 내 샘플 코드입니다.
#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>
. 내가 만약 "마우스 오른쪽 클릭 -> 정의로 이동" 마이크로 소프트 VS에서 그들이에서 같은 줄에 두 점 xstring
파일 :
typedef basic_string<char, char_traits<char>, allocator<char> >
string;
하지만 프로그램을 실행할 때 예외 오류가 발생합니다.
OperatorString.exe의 0x77846B6E (ntdll.dll) : 0xC00000FD : 스택 오버플로 (매개 변수 : 0x00000001, 0x01202FC4)
주석 처리 할 때 런타임 오류가 발생하는 이유는 #include <string>
무엇입니까? VS 2013 Express를 사용하고 있습니다.
#include<iostream>
그리고 <string>
둘 다 포함 할 수 있습니다 <common/stringimpl.h>
.
...\main.cpp(23) : warning C4717: 'operator<<': recursive on all control paths, function will cause runtime stack overflow
이 줄을 실행하는cl /EHsc main.cpp /Fetest.exe