2012-09-02 60 views
6

Recibo un error cuando intento dar salida al valor de retorno de una de mis métodos:¿Por qué escribir una std :: string para generar un operador desconocido << error?

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; 
}; 

Método que debe devolver cadena:

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

    return ss.str(); 
} 
+0

Necesita sobrecargar el '<< operador'. – Rapptz

+2

@Rapptz - no, no aquí; la función miembro 'getBookInfo' devuelve una cadena y esa cadena se inserta. –

+2

¿Qué es 'str :: string'? –

Respuesta

24

#include <string> falta.

+1

Problema resuelto ... Me siento estúpido hoy jajaja. No lo tenía allí y 'cout' funcionaba bien. Gracias, lo recordaré para la próxima vez. – HelpNeeder

2

¿Cómo obtuvo el código la definición de string? El encabezado <string> también declara el insertador de flujo.

Cuestiones relacionadas