2017-05-26 4 views
1

Ich habe einen Code aus here (Color-Ordner) in Visual Studio 2013 verwendet, um Farbdaten aus Kinect v2 zu erfassen. Aber wenn ich den Code ausführen möchten, diese Zeilen Code in util.h Datei verursacht einen Compiler-Fehler:Fehler bei der Verwendung eines Codes aus Github in Zeichenfolge

#define ERROR_CHECK(ret)           \ 
if (FAILED(ret)){ 
                    \ 
    std::stringstream ss;           \ 
    std::ss << "failed " #ret " " << std::hex << ret << std::endl; \ 
    throw std::runtime_error(ss.str().c_str());     \ 
} 

Und mein Visual Studio unten zieht ss eine rote Linie und steht geschrieben: namespace "std" has no member "ss" below <<: expected a ";" and below throw: expected a declaration. Was ist dieser Teil des Codes und wie kann ich ihn beheben?

Antwort

0

Dieser Code ist falsch, ändert std::ss zu ss helfen sollte:

#define ERROR_CHECK(ret)         \ 
if (FAILED(ret)) {           \ 
                   \ 
    std::stringstream ss;          \ 
    ss << "failed " #ret " " << std::hex << ret << std::endl; \ 
    throw std::runtime_error(ss.str().c_str());    \ 
} 

Ein weiterer Fehler im Code-Schnipsel Sie zeigen, dass es eine Zeile Fortsetzung nach dem if(statement) fehlte.
Stellen Sie außerdem sicher, dass <sstream> bei der Verwendung enthalten ist.

Das Makro scheint bereits in original code behoben zu sein, aber es kann sein, dass andere Buggy-Versionen von util.h in den anderen Beispielordnern vorhanden sind.

+0

tritt ja, ich eingeschlossen es. – ma98

+0

Der Fehler wurde geändert: Diese Deklaration hat keine Speicherklasse oder Typangabe. – ma98

+0

@masoomi Ich werde diesem Code nicht sehr vertrauen. –

-1

Es kann nicht sein, was Sie wollten, aber funktioniert Ihr Programm, wenn Sie nur jede Zeile kommentieren? Es ist "nur" ein Stringstream, dessen einziger Zweck (soweit ich das sehe) darin besteht, beim Auftreten eines Fehlers auszudrucken. Ersetzen Sie es mit einer Art von printf(), wenn Sie wirklich die Ausgabe sehen wollen.

#define ERROR_CHECK(ret)           
if (FAILED(ret)){ 

    // std::stringstream ss;          
    // std::ss << "failed " #ret " " << std::hex << ret << std::endl; 
    // throw std::runtime_error(ss.str().c_str()); 
printf("Error : FAILED(ret)"); 

} 

Auf diese Weise Ihr Code kompiliert, aber Sie nicht den ursprünglichen Wurf eines Fehlers haben IFF ein Fehler

+0

können Sie diesen Code testen? müssen Opencv und Kinectsdk2 Bibliotheken – ma98

+0

_ "Ersetzen Sie es mit printf()" _ Huh ?? Verstehst du überhaupt, was dieser Code tut? –

+0

@masoomi _ "müssen opencv und kinectsdk2 libraries" _ Nicht für dieses Stück Code, nein. –

Verwandte Themen