Domanda

Forse ho perso qualcosa, ma non posso capire perché Visual Studio 2008 non è vedere la procedura rdbuf (). Ecco il mio codice:

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

La classe BufferedStringBuf è da questa pagina: http: //www.devmaster .net / forum / showthread.php? t = 7037

che produce il seguente errore:

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

Tutto quello che voglio fare è redirect std :: cout alla finestra Output di Visual Studio tramite OutputDebugString () ..

È stato utile?

Soluzione

Lei non è permesso avere istruzioni eseguibili a portata a livello di file. È possibile dichiarare le variabili, ma non è possibile richiamare le funzioni come istruzioni standalone. Spostare il codice in una funzione (come del gf risposta dimostra ), e si dovrebbe avere alcun problema.

Altri suggerimenti

Uso della classe esempio dato su quel sito non ho alcun problema:

#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);
}

Si noti che si deve creare un'istanza di una classe che deriva da BufferedStringBuf perché BufferedStringBuf::writeString() è puro virtuale, rendendo così una classe astratta -. Classi astratte non possono essere istanziati

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top