可能noob問題。我希望使用CImg庫來進行一些圖像處理。他們中的一些可能是(8位)類型和其中一些(16位)。不幸的是,我不知道數據的類型,直到用戶不選擇文件來處理。當然,我可以這樣做:模板。沒有類型在編譯期間知道
...
CImg <unsigned char> img_unisgned_char;
CImg <unsigned short> img_unisgned_short;
...
if (user_pick_8bit) img_unisgned_char.load_raw(fname,img_size_x,img_size_y);
if (user_pick_16bit) img_unisgned_short.load_raw(fname,img_size_x,img_size_y);
...
但CIMG方法99%,看起來完全爲「無符號的字符」,「詮釋」或「浮動」類型相同(如「load_raw」或「模糊」例如)。有什麼辦法可以做 - 我不知道 - 指針? - 因此,當用戶選擇文件我可以創造奇蹟,如:
if (user_pick_8_bit) img = img_unisgned_char;
if (user_pick_16bit) img = img_unisgned_short;
...
//now no mother of what type is picked up by user I simply make:
img.load_raw(...);
相關問題:[http://stackoverflow.com/q/608409/501250](http://stackoverflow.com/q/608409/501250)。如果您無法使用虛擬基類對CImg <>'進行翻新,則可能不適用您的情況。 – cdhowie 2013-04-10 19:47:05
在我的網頁搜索期間,我找到了這個解決方案。但是我不明白我如何在我的情況下使用它。 (我對C++的瞭解甚至不足以改變CIMg庫中的任何東西......)。所以我唯一的選擇是爲每種類型創建單獨的代碼? – user2267612 2013-04-10 19:54:58
不一定。你可以定義你自己的模板函數:'template void do_image_processing(/ * ... * /){CImg img; img.load_raw(/ * ... * /); }' –
cdhowie
2013-04-10 19:56:38