2012-09-02 13 views
6

Ich erhalte eine Fehlermeldung, wenn ich die Ausgabe der Rückgabewert von einem meiner Methoden versuchen:Warum schreibt eine std :: string zu cout, was einen unbekannten Operator verursacht << Fehler?

Error: No operator "<<" matches these operands. Operand types are: std::ostream << std::string 

Main.cpp

#include <iostream> 
using namespace std; 

#include "Book.h" 

int main() 
{ 
    book.setTitle("Advanced C++ Programming"); 
    book.setAuthorName("Linda", "Smith"); 
    book.setPublisher("Microsoft Press", "One Microsoft Way", "Redmond"); 
    book.setPrice(49.99); 

    cout << book.getBookInfo(); // <-= this won't compile because of the error above. 

    int i; 
    cin >> i; 

    return 0; 
}; 

Methode die Zeichenfolge zurückgeben sollte:

string Book::getBookInfo() 
{ 
    stringstream ss; 
    ss << title << endl << convertDoubleToString(price) << endl; 

    return ss.str(); 
} 
+0

Sie müssen den '<< Operator 'überladen. – Rapptz

+2

@Rapptz - nein, nicht hier; Die Memberfunktion 'getBookInfo' gibt eine Zeichenkette zurück, und diese Zeichenkette wird eingefügt. –

+2

Was ist 'str :: string'? –

Antwort

24

#include <string> fehlt.

+1

Problem gelöst ... Ich fühle mich heute dumm lol. Ich hatte es nicht dort und "Cout" funktionierte OK. Danke, ich werde mich für das nächste Mal erinnern. – HelpNeeder

2

Wie hat der Code die Definition string bekommen? Der Header <string> deklariert auch den Stream-Inserter.