2017-05-26 16 views
1

我在Visual Studio 2013中使用的代碼從here(彩色文件夾)來捕捉從超高動力學V2顏色數據的代碼。但是當我要運行的代碼,代碼在util.h文件這些行導致編譯錯誤:錯誤在使用中從GitHub在字符串流

#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());     \ 
} 

而且我下面的Visual Studio中汲取ss紅線和寫的是:namespace "std" has no member "ss" below <<: expected a ";" and below throw: expected a declaration。 這部分代碼是什麼,我該如何解決它?

回答

0

這段代碼是錯誤的,改變std::ssss應該有所幫助:

#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());    \ 
} 

代碼另一個錯誤片斷告訴你,有一個行延續if(statement)後失蹤。
還要確保<sstream>使用這個時候包括在內。

該宏似乎已在original code中得到修復,但其他bug版本的util.h已存在於其他示例文件夾中。

+0

是的,你沒有錯誤的原始扔,我把它。 – ma98

+0

錯誤更改:此聲明沒有存儲類或類型指定; – ma98

+0

@masoomi我不會相信代碼很遠。 –

-1

它可能不是你想要的,但確實你的程序的工作,如果你只是發表評論的每一行?它只是一個串流,只有當我發現錯誤時纔打印出來。如果您真的想看到輸出,請用某種printf()替換它。

#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)"); 

} 

這樣你的代碼編譯,但敵我識別發生錯誤時

+0

你可以測試這段代碼嗎?需要OPENCV和kinectsdk2庫 – ma98

+0

_「與printf的更換()」 _咦?你甚至可以理解代碼的作用嗎? –

+0

@masoomi _「需要OPENCV和kinectsdk2庫」 _不爲這一段代碼,沒有。 –