关于构造函数,洛谷的编译器

回复帖子

@杜岱玮 2018-01-13 01:36 回复

这可是奇了怪了,居然会报错

struct myint {
    long long carry;
    long long num;
    myint(long long a = 0, long long b = 0)
    {
        carry = a;
        num = b;
    }
    bool operator < (const myint &a)
    {
        if (carry < a.carry)
            return true;
        else if (carry > a.carry)
            return false;
        else
            return num < a.num;
    }
    myint operator * (const int &a)
    {
        long long t;
        myint ret;
        t = num*a;
        ret.num = t%mod;
        ret.carry = carry + t / mod;
        return ret;
    }
    bool operator != (myint &a)
    {
        if (carry != a.carry || num != a.num)
            return true;
        return false;
    }
};
const myint zero;
const myint one = { 0,1 };
const myint MAX_myint = { INF,INF };
@yxr811740686 2018-01-13 09:06 回复

你把两个longlong和成一句, 把常量的大括号前加上(myint), 0写成0ll, 1写成1ll, 就应该没理由报错了

@Drench 站长团 2018-01-13 13:26 回复

你漏了默认构造函数,VS自动给你加上了而已。