2012-04-20 21 views
0

我有一個項目利用第三方庫創建了一個方法,該方法需要傳入以下參數:const std::vector< const Image *> 嘗試創建std::vector< Image * >時,可以靈活地將項目生成到我無法將此類型傳遞給該方法。我認爲VC++ 2010將呈現方法,通過參數類型的意圖,但似乎需要以傳遞在參數類型聲明這是我最後使用,它編譯:在VC++ 2010中傳入const向量

const Image *SRImages1 = &SRImages[0]; 
const Image *SRImages2 = &SRImages[1]; 
const std::vector< const Image *> SRImageVector(&SRImages1, &SRImages2); 

tungsten::vision::SuperResolution::ResultEnum r = SR.enhance(&resultImage, SRImageVector, referenceImageIndex, referenceImageROI, interlaced, asynchronous, listener); 

當然這是非常嚴格的,我希望能夠通過使用push_back操作符動態地將項目生成到向量中。

爲什麼MS VC++需要這個,我如何在這些限制內工作來創建一個我可以操縱的向量?

編輯:從OP的評論複製:

這裏是.h文件簽名:

ResultEnum enhance(Image *result, 
        const std::vector<const Image*> &images, 
        unsigned int referenceImageIndex, 
        Rectangle referenceImageROI, 
        bool interlaced, 
        bool asynchronous, 
        SuperResolutionListener *listener); 
+1

你能告訴我們你想要的代碼,我不能真正看到當前代碼的問題。 – 2012-04-20 13:56:31

+0

請顯示lib函數的簽名。我認爲這個參數的類型是'const std :: vector &' – hansmaad 2012-04-20 13:58:16

+0

這裏是我想要使用的代碼: – khalberg 2012-04-20 15:25:56

回答

0

通過您的評論來看,實際的參數似乎是

const std::vector< const Image *>& 

換句話說,它通過const引用取vector。這意味着您可以簡單地使用push_back構造非常量向量,並將其傳遞給enhance。例如

const Image *SRImages1 = &SRImages[0]; 
const Image *SRImages2 = &SRImages[1]; 
std::vector< const Image *> SRImageVector(&SRImages1, &SRImages2); // Iteration constructor. 
SRImageVector.push_pack(new Image); // Example only - beware memory leak 


tungsten::vision::SuperResolution::ResultEnum r = SR.enhance(&resultImage, 
                   SRImageVector, 
                   referenceImageIndex, 
                   referenceImageROI, 
                   interlaced, 
                   asynchronous, 
                   listener);