[問題] C++ variadic function?

看板C_and_CPP (C/C++)作者 (小v)時間13年前 (2012/11/29 20:48), 編輯推噓0(008)
留言8則, 3人參與, 最新討論串1/1
這幾天看到了上面的那篇:"我所不知道的 variadic template" 好奇之下去搜尋相關資料來看, 找到了 variadic function 這個東西。 想說找個實際例子來應用, 打算把 OpenCV 內幾種資料型態的 release function 整合在一起。 把不同資料型態,不同個數的參數丟到同一個 function 內釋放。 (單純想嘗試新功能,先不論其必要性) 環境:Visual Studio 2008 (C++/CLR) + OpenCV 2.4 參考 Wiki:http://en.wikipedia.org/wiki/Variadic_function 其中 C++/CLI 的這段:http://ideone.com/u62mw8 下去修改。 目前的 Code:http://ideone.com/GitrPx 原先 Wiki 的 Sample Code 是使用於 Managed Type, 但欲輸入的資料型態為 Unmanaged Type,所以改為用 void* 下去傳。 本來打算用 template + overloading 去解決, (http://ideone.com/XzbPGE) 不過這樣變成多參數的部分會有問題。 (error C2661: 'cvRelease' : 多載函式不使用 9 引數) 所以才改成現在這樣,用 void* 先傳過去, 再一個一個轉轉看,沒出錯的話就是轉對,再 Release 掉。 想請問各位前輩, 在這個方面一般做法大概是如何? 有沒有更漂亮的解決方式? 第一次在這裡發文,希望各位大大鞭小力一點。 = =" -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.64.101.139

11/30 08:01, , 1F
沒有裝opencv,不確定 http://codepad.org/TVC7nrpt
11/30 08:01, 1F

11/30 15:22, , 2F
謝謝kiedveian的回答
11/30 15:22, 2F

11/30 15:22, , 3F
不過 template<class T, class ...Args>
11/30 15:22, 3F

11/30 15:23, , 4F
在 CLR 似乎沒辦法 compile 過, 我再嘗試其他方法看看
11/30 15:23, 4F

11/30 17:06, , 5F
11/30 17:06, 5F

11/30 17:37, , 6F
寫成 cvRelease(args)...; 就可以了
11/30 17:37, 6F

11/30 23:16, , 7F
To kevingwn:可是如上推文所說, 宣告args那邊過不了...
11/30 23:16, 7F

11/30 23:18, , 8F
To kiedveian:原來是compiler的限制, 謝謝大大解惑
11/30 23:18, 8F
文章代碼(AID): #1GjrceFL (C_and_CPP)
文章代碼(AID): #1GjrceFL (C_and_CPP)