有沒有辦法做這樣的事情的僞代碼(順便說一句,我知道我不能使用模板來做到這一點,這只是爲了說明):操作模板?
template<operator Op>
int operator Op (int a, number b) {
return (a Op to_int(b));
}
你得到的要點權。目前我使用了很多重載來做到這一點,但它太重複了。我試着用void *指針(對於函數args)做一些事情,最終傳遞了runtime-typeid信息,但代碼似乎太涉及了。 任何其他解決辦法....
thanx您的想法
我想少寫覆蓋的方法......我必須寫12只爲+, - ,/,* ..not到提及我想要覆蓋的其他操作。
讓我給你,我想重複少了什麼更具體的例子:
scalar operator Op (scalar a, string b) {..Op..}
scalar operator Op (scalar a, number b) {..Op..}
scalar operator Op (scalar a, scalar b) {..Op..}
的處理是不同的,但是當我需要做的的計算裏面是一樣的,除了運營商是不同的。所以,而不是做12重載的方法,我會做3. 裏面的代碼可能比我的第一個插圖更長,對不起。
我想我找到了一個解決方案: http://en.wikipedia.org/wiki/Barton-Nackman_trick 或升壓庫nevsan指出。
我可能是一個菜鳥,但這個只是看上去錯誤在許多層面上。從我可以收集你想要實現的內容,然後不,你不能這樣做,就像說你想在編譯時創建函數名稱一樣。 –
在'number'中爲'int'添加一個隱式轉換是否合理? – BoBTFish
@casperOne不知道。 –