2

私は少し無力なので、この質問をしています。このエラーはVisual Studioでのみ発生し、GCCはエラーや警告なしでコンパイルします。これは移植可能なコードなので、両方のコンパイラで動作するソリューションを探しています(そして、最良の場合、プラットフォームに依存しませんifdefs)。

エラーC2512:'std :: basic_ostream <_Elem、_Traits>':適切なデフォルトコンストラクターが利用できません

次のように定義されているタイプMyObjectのオブジェクトを構築しているときに発生します

   class MyObject : public Socket, public std::ostream

ostreamここでVSが期待する特別なパラメータは何ですか?

4

1 に答える 1

5

std::ostreamの型エイリアスですstd::basic_ostream<char>。のコンストラクターはstd::basic_ostream<char>、出力ストリームが関連付けられているストリーム バッファーへのポインターを想定しています。いずれかを指定する必要があります。

コンストラクターのシグネチャは次のとおりです。

 explicit basic_ostream( std::basic_streambuf<CharT, Traits>* sb );

クラス コンストラクターは次のようになります。

class MyObject : public Socket, public std::ostream
{
    MyObject(/* ... */) 
        : 
        std::ostream(/* provide a ptr to a stream buffer here /*) 
    //  ...
    {
        // ...
    }
};

こちらも参考にどうぞ。

于 2013-03-12T12:49:12.573 に答える