Betrachten Sie den folgenden Code:
%Vor%Warum in aller Welt:
<<
bei Stackoverflow ab, wie von Visual? vorhergesagt? Btw, ersetzt std::cout << textMsgInstance;
durch m.text
funktioniert.
Ich vermute, dass Sie #include <string>
nicht geschafft haben. Wenn der Compiler also ein std::string
ausgibt, kann er das nicht und beginnt nach impliziten Konvertierungen zu suchen - und Ihr impliziter Konstruktor zu einer TextMessage sieht nur wie die Rechnung aus. Aber warten Sie - jetzt geben wir eine TextMessage in der Ausgabefunktion von TextMessage und bam aus.
Ich kann mir nur vorstellen, dass es keinen Operator & lt; & lt; Für std :: string sucht es also nach einer Konvertierung und findet den einen Argumentkonstruktor TextMessage (std :: string).
Es ist oft ratsam, unerwartete Aufrufe an einen Argumentkonstruktor zu verhindern, indem Sie sie explizit machen.
%Vor%Dann wird der Konstruktor für implizite Konvertierungen nicht berücksichtigt.
Tags und Links c++ visual-studio-2010