0

現在の出力はガベージ 8 桁の値です。加算関数が1と2を加算しない理由がよくわかりません。また、次の関数をどのように実装しますか?

TrashCan other = combined – myCan;
cout << "the other cup's filled to " << other.getUsed( ) << endl;

コードは次のとおりです。

主要:

int main()

{
cout << "Welcome to Howie's TrashCan Program!" << endl;

TrashCan myCan;
TrashCan yourCan;

yourCan.setSize( 12 );
myCan.setSize( 12 );

yourCan.addItem( );
yourCan.addItem( );
myCan.addItem( );

myCan.printCan();
yourCan.printCan();

TrashCan combined = yourCan + myCan;
cout << "this drive's filled to " << combined.getUsed( ) << endl;...

クラス:

class TrashCan {
public:
TrashCan( );
TrashCan( int size );
TrashCan( int size, int contents );
TrashCan operator+(TrashCan);
TrashCan operator-(TrashCan);
void setSize( int size );
void addItem( );
void empty( );
void cover( );
void uncover( );

void printCan( );
int getUsed();

private:
bool myIsCovered;
int my_Size;
int my_Contents;
};

実装: (次の関数のいずれかを台無しにしたと仮定しています)

TrashCan TrashCan::operator+ (TrashCan A)
{
TrashCan combined;
combined.my_Contents= my_Contents + A.my_Contents;
}

int TrashCan::getUsed()
{
return my_Contents;
}
4

2 に答える 2

1

関数で一時的なものを返しません。

TrashCan TrashCan::operator+ (TrashCan A)
{
TrashCan combined;
combined.my_Contents= my_Contents + A.my_Contents;
// should be
return combined;
}
于 2013-11-04T03:22:53.037 に答える
-1

これを変更してみてください

TrashCan TrashCan::operator+ (TrashCan A)
{
    TrashCan combined;
    combined.my_Contents= my_Contents + A.my_Contents;
}

これとともに

TrashCan TrashCan::operator+ (TrashCan A)
{
    this->my_Contents += A.my_Contents;
    return *this;
}
于 2013-11-04T03:25:21.610 に答える