C++运算符重载还有类的默认构造函数的问题

定义了一个类叫Integer,只有一个私有成员value,然后要实现前置后置自加还有插入运算符重载。
前置自加内容是
Integer i;
value ++;
I.setValue(value);
return i;
这里我也想直接写成return Integer(value++);可是编译不通过。
然后插入运算符重载是
output <<value ;
return output;这两部分功能单独实现没有问题,但是放到一起用就不行了cout<<++i<<endl;想问大神怎么改。还有就是怎么实现Integer i=20;i+=20;

有没有完整一点的代码

#include
using namespace std;
class Integer {
public:
Integer() { value = 0;}
Integer( int v) { value = v;}
int getValue();
void setValue( int);
Integer( Integer& i) { value= i.getValue();}
Integer operator + ( Integer&);
friend ostream& operator <<( ostream&, Integer);
Integer& operator ++();
Integer& operator ++(int);
private:
int value;
};

int Integer::getValue() {
return value;
}
//加法重载
Integer Integer::operator +(Integer& i2) {
Integer i;
i.setValue( value + i2.getValue());
return i;
}

void Integer::setValue(int v) {
value = v;
}
//插入运算符重载
ostream& operator << (ostream& output,Integer i){
output << i.getValue();
return output;
}
//前置自加
Integer& Integer::operator ++(){
value++;
// Integer i;
// i.setValue(value);
return *this;
}
//后置自加
Integer& Integer::operator ++(int){
Integer i;
i.setValue(value);
++value;
return i;

}

int main()
{
Integer i1(10);
Integer i2=24;//问题一
Integer i3(0);
cout << ++i1 << endl;
cout << i2++ << endl;
i3 = i1 + i2;
cout << i3 << endl;
i3.operator +=10;//问题二
cout << i3 << endl;
return 0;
}
自加的问题已经解决了,但还是不太懂,之前的写法是没有加&,剩下两个问题已经标注了,希望可以解答