verwenden Ich brauche ostream
Zeiger in der Klasse, die zum Zeitpunkt der Konstruktion der Klasse erstellt wird.wie Zeiger auf Ostream in Klasse
Mein Code ist:
#include <iostream>
#include <string>
#include <vector>
#include <map>
#include <cstring>
#include <climits>
#include <cstdio>
#include <fstream>
using namespace std;
class test2_t {
public:
test2_t()
{
std::filebuf fb;
fb.open ("dump.txt",std::ios::out);
ostream *output_ = new std::ostream(&fb);
}
virtual ~test2_t()
{}
ostream *output_;
void printing()
{
print(output_);
}
void print(ostream *out)
{
*out<<"dump data"<<"\n";
}
private:
/* data */
};
int main()
{
test2_t obj;
obj.printing();
}
Aber wird immer Segmentation fault
ich weiß nicht, warum. Bitte hilf mir.
Überprüfen Sie den Konstruktor erneut, definieren Sie nicht eine *** lokale Variable *** mit dem Namen 'output_' dort? Nicht dass es dein einziges Problem ist. Was denkst du passiert mit dem Zeiger auf die andere lokale Variable 'fb' wenn die Konstruktorfunktion endet? Wohin wird dieser Zeiger zeigen? –
[Ich bekomme] (http://coliru.stacked-crooked.com/a/8be77c35bf928360) * Warnung: unbenutzte Variable 'output_' [-Wunused-Variable] * – chris
Brauchen Sie wirklich einen Zeiger? Zumindest für dieses Beispiel ist ein Mitglied gerade genug. Denken Sie auch daran, 'std :: unique_ptr' anstelle des einfachen Zeigers zu verwenden, da 'test2_t' offensichtlich den Stream besitzt. –
alexeykuzmin0