0

何かを見逃したのかもしれませんが、Visual Studio 2008 で rdbuf() プロシージャが表示されない理由がわかりません。これが私のコードです:

16. #include "DebugBuffer/BufferedStringBuf.h"
17.
18. BufferedStringBuf debug_buffer(256);
19. std::cout.rdbuf(&debug_buffer);

BufferedStringBuf クラスはこのページからのものです: http://www.devmaster.net/forums/showthread.php?t=7037

次のエラーが発生します。

...src\main.cpp(19) : error C2143: syntax error : missing ';' before '.'

私がしたいのは、OutputDebugString() を使用して std::cout を Visual Studio 出力ウィンドウにリダイレクトすることだけです。

4

2 に答える 2

4

ファイルレベルのスコープで実行可能なステートメントを持つことは許可されていません。変数を宣言することはできますが、関数をスタンドアロン ステートメントとして呼び出すことはできません。コードを関数に移動すると ( gf の回答が示すように)、問題はないはずです。

于 2010-04-10T16:56:22.297 に答える
1

そのサイトで提供されているサンプルクラスを使用しても、問題はありません。

#include <iostream>
#include "DebugBuffer/BufferedStringBuf.h"

class DbgBuf : public BufferedStringBuf {
public:
    DbgBuf() : BufferedStringBuf(255) {}
    virtual void writeString(const std::string &str) {}
};

int main()
{
    DbgBuf debug_buffer;
    std::cout.rdbuf(&debug_buffer);
}

から派生するクラスのインスタンスを作成する必要があることに注意してください。純粋な仮想であるBufferedStringBufためBufferedStringBuf::writeString()、抽象クラスになります。抽象クラスはインスタンス化できません。

于 2010-04-10T16:25:44.420 に答える