昨天我看到这里 link一个问题。创建模板,模板类重载操作
它有答案,但它不为我工作。
所以,在第一个问题
NSize<30, unsigned char, unsigned short> a(101);
NSize<25, unsigned char, unsigned short> b(120);
NSize<15, unsigned char, unsigned short> c(115);
NSize<30> res = (a*b)*(a*c);
而且模板类
template<int size,typename basic_type=unsigned int,typename long_type=unsigned long long,long_type base=256>
class NSize
{
...
}
和解决方案从Lol4t0
template <int lengthA, int lengthB>
NSize<lengthA + lengthB> operator * (const NSize<lengthA> &a, const NSize<lengthB> &b)
{
return NSize<lengthA + lengthB>(...);
}
因此,我们有非常大的数字。对于他们我们有我们的NSize类,其中size
是我们可以为这个数字存储多少位数。
因此,NSize<3>
我们可以存储它的999
我们希望有重载NSize
一些运营商的最大数量。当size
类似时很容易,但当size
不同时,我们遇到问题。
Lol4t0's
解决方案并没有为我工作,而这正是克利翁返回我
error: 'NSize<max(aS, bS)> NSize<size, basic_type, long_type, base>::operator*(NSize<aS>&, NSize<bS>&)' must take either zero or one argument
NSize<max(aS,bS)> operator * (NSize<aS> &a, NSize<bS> &b)
error: no match for 'operator*' (operand types are 'NSize<30, unsigned char, short unsigned int>' and 'NSize<30, unsigned char, short unsigned int>')
NSize<30, unsigned char, unsigned short> resc = (a*b)*(a*c);
有什么建议?
是这个实际的代码?它看起来您正在使用非const引用 –
@PiotrSkotnicki 是的,有常量n大小有,但改变了它,当我试图让工作方案。 –
请将您的实际代码发布在[最小,完整和可验证的示例](http://www.stackoverflow.com/help/mcve)中。它看起来好像你试图让'operator *'成为一个成员函数,在这种情况下它应该只有一个参数(这是你的编译器告诉你的)。 – Barry