Bu benim örnek kodum:
#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;
}
Eğer yorum #include <string>
yaparsam herhangi bir derleyici hatası almazsam, sanırım bir nevi içerdiği için #include <iostream>
. Ben ise "sağ tıklama -> Definition git" Microsoft VS onlar aynı çizgiye hem noktası xstring
dosyası:
typedef basic_string<char, char_traits<char>, allocator<char> >
string;
Ancak programımı çalıştırdığımda bir istisna hatası alıyorum:
OperatorString.exe'de 0x77846B6E (ntdll.dll): 0xC00000FD: Yığın taşması (Parametre: 0x00000001, 0x01202FC4)
Yorum yaparken neden bir çalışma zamanı hatası aldığım hakkında bir fikriniz var #include <string>
mı? VS 2013 Express kullanıyorum.
#include<iostream>
ve <string>
her ikisi de içerebilir <common/stringimpl.h>
.
...\main.cpp(23) : warning C4717: 'operator<<': recursive on all control paths, function will cause runtime stack overflow
bu satırı çalıştırdığınızda uyarı alırsınızcl /EHsc main.cpp /Fetest.exe