2012-09-02 87 views
6

मैं जब मैं उत्पादन करने के लिए अपने तरीकों में से एक से वापसी मान की कोशिश में एक त्रुटि हो रही है:एक अज्ञात ऑपरेटर के कारण cout को std :: स्ट्रिंग क्यों लिख रहा है << त्रुटि?

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

विधि जो लौट जाना स्ट्रिंग:

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

    return ss.str(); 
} 
+0

आपको '<< ऑपरेटर' को अधिभारित करने की आवश्यकता है। – Rapptz

+2

@ रैपेटज़ - नहीं, यहां नहीं; सदस्य फ़ंक्शन 'getBookInfo' एक स्ट्रिंग देता है, और वह स्ट्रिंग डाली जाती है। –

+2

'str :: string' क्या है? –

उत्तर

24

#include <string> गुम है।

+1

समस्या हल हो गई ... मुझे आज बेवकूफ लगता है। मेरे पास वहां नहीं था और 'cout' ठीक काम कर रहा था। धन्यवाद, मुझे अगली बार याद होगा। – HelpNeeder

2

कोड को string की परिभाषा कैसे मिली? हेडर <string> भी स्ट्रीम इंसर्टर घोषित करता है।