运算符重载c ++放置

问题描述

| 我在弄清楚我创建的重载运算符的放置位置时遇到麻烦。他们应该在他们所经营的班级中还是内部?两种方式都给我带来麻烦。任何指针都很棒。 这是我非常基本的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 (将#修改为@)