问题描述
|
我在弄清楚我创建的重载运算符的放置位置时遇到麻烦。他们应该在他们所经营的班级中还是内部?两种方式都给我带来麻烦。任何指针都很棒。
这是我非常基本的uint128_t类:
class uint128_t{
private:
uint64_t UPPER,LOWER;
public:
// constructors
uint128_t(){
UPPER = 0;
LOWER = 0;
}
template <typename T>
uint128_t(T val){
UPPER = 0;
LOWER = (uint64_t) val;
}
template <typename S,typename T>
uint128_t(const S & upper_val,const T & lower_val){
UPPER = (uint64_t) upper_val;
LOWER = (uint64_t) lower_val;
}
uint128_t(uint128_t val){
UPPER = val.upper();
LOWER = val.lower();
}
uint64_t upper(){
return UPPER;
}
uint64_t lower(){
return LOWER;
}
};
如果操作员在课堂上,他们工作会很好。但是,我可以做uint128_t ^ uint32_t
,但不能做uint32_t ^ uint128_t
。另一方面,把所有东西都搬出去给我3英镑。同样,operator =显然不会对恒定输入起作用,因为值将是ULLL,除非有人知道这样做的方法,否则该值将不存在。
我该怎么办?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)