There is more than one problem. The most obvious is that your loop will never get entered. You need to change your greater than to a less than).
The next problem is that you need to set the len variable to the smaller vector size (change the less than to a greater than). Otherwise you will get an exception when the loop goes out of bounds.
Third problem is that you are pushing the result of the calculation into the num vector - you need to be replacing the index value, rather than appending to what is already there.
The last, which will not become evident unless you start using bigger numbers on both side of the equation, is that you need to check the carry after the loop exists, and if it has a value, add it to the result.
Mint Mint::operator+=(const Mint &rhs) {
size_t len = num.size();
char carry = 0;
if (len > rhs.num.size())
len = rhs.num.size();
size_t i;
for (i = 0; i <= len - 1; i++)
{
char result = num[i] + rhs.num[i] + carry;
num[i] = result % 10;
carry = result / 10;
}
while (carry)
{
if (i < num.size())
{
num[i] += carry;
if (num[i] >= 10)
{
num[i] -= 10;
i++;
}
else
carry = 0;
}
else {
num.push_back(carry);
carry = 0;
}
}
return *this;
}