有没有办法做这样的伪代码(顺便说一句,我知道我不能使用模板来做到这一点,这只是为了说明):
template<operator Op>
int operator Op (int a, number b) {
return (a Op to_int(b));
}
你的主旨是正确的。目前我使用了很多重载来做到这一点,但它太重复了。我尝试使用 void* 指针(用于函数 args)并最终传递运行时类型 ID 信息,但代码似乎过于复杂。任何其他解决方案....
谢谢你的想法
我正在尝试编写更少被覆盖的方法...我必须为 +,-,/,* 编写 12 ..更不用说我想覆盖的其余操作了。
让我给你更具体的例子,我想少重复:
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 或者 boost libs nevsan 指出。