1

多くのクラスで >> 演算子をオーバーロードしましたが、この場合は違いがあります。通常、演算子の関数にクラス メンバーを設定することはできません。char*-argument コンストラクターを使用してオブジェクトを設定する必要がありますが、それを行うと、プログラムが動作しなくなります。以下の機能を見ることができます:

istream & operator >>(istream &stream ,Big& b)
{
    char *str;
    stream>>str;
    b=Big(str);
    return stream;
}
4

3 に答える 3

2

入力を初期化されていないポインターに読み取ろうとしました。std::string代わりに使用してください。

于 2012-08-15T07:24:43.290 に答える
1
char *str;
stream>>str;

にメモリを割り当てていないため、未定義の動作が呼び出されますstr。メモリを割り当てるか、std::string代わりに a を使用します (推奨)。

于 2012-08-15T07:24:51.040 に答える
1

char *strからのストリーミングの結果を保持することはできませんstream(ポインターを読んでいる場合を除きますが、それがあなたの意図であるとは思えません)。あなたはおそらくしたいですstd::string str

于 2012-08-15T07:25:11.807 に答える