2016-03-18 6 views
-4

Ich möchte einen Fehler werfen, wenn ein Bitmap-Läden, die seinen Weg umfassenC++ Laufzeitfehler mit verketteten Nachricht

ALLEGRO_BITMAP* bitmap; 
bitmap_path 
if(bitmap=al_load_bitmap(bitmap_path)==0){ 
    throw runtime_error("error loading bitmap from: '"<<bitmap_path<<"'"); 
}; 
//continue if no error 
+1

Könnten Sie die Frage versuchen und neu formulieren? – Eliad

Antwort

1

Sie können nicht den << Operator Strings direkt verketten.

Wenn bitmap_path ein std:::string ist, verwenden Sie den + Operator statt:

throw runtime_error("error loading bitmap from: '" + bitmap_path + "'"); 

Wenn bitmap_path ein char* ist stattdessen warf er oder die erste Stringliteral, in ein temporäres std::string so können Sie + verwenden:

throw runtime_error("error loading bitmap from: '" + string(bitmap_path) + "'"); 

Andernfalls können Sie std::ostringstream oder gleichwertiges verwenden einen temporären std::string Wert zu konstruieren:

ostringstream oss; 
oss << "error loading bitmap from: '" << bitmap_path << "'"; 
throw runtime_error(oss.str());