यह मेरा नमूना कोड है:
#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 में 0x77846B6E (ntdll.dll): 0xC00000FD: ढेर अतिप्रवाह (पैरामीटर: 0x00000001, 0x01202FC4)
कोई भी विचार क्यों मुझे टिप्पणी करते समय एक रनटाइम त्रुटि मिलती है #include <string>
? मैं वीएस 2013 एक्सप्रेस का उपयोग कर रहा हूं।
#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