Ich habe einen virtuellen Typ Methode int_type
in code being adapted from here, dass der einzige Fall, in dem der Code den Compiler-Fehler gibt:INT_TYPE nicht Typ Frustration Namensgebung
‘int_type’ does not name a type
int_type ThreadLogStream::overflow(int_type v)
^.
Debuggen Schritte bisher
Wenn ich über eine andere Instanz von
int_type
in der Qt Creator IDE schwinge, wirdtraits_type::int_type std::basic_streambuf::int_type
angezeigt, was bedeutet, dass jede andere Instanz vonint_type
nicht verursacht werden sollte Probleme.Laut this reference gehört der int_type tatsächlich zu
basic_streambuf
, aber der AufrufTraits::int_type
hat nicht funktioniert.Ich habe versucht, die Problemvariable zu definieren, wie in den folgenden typedefs gezeigt, aber
char_type
undtraits_type
wurden nicht erkannt.
threadlogstream.cpp
...
int_type ThreadLogStream::overflow(int_type a)
{
int_type b = a; //This gives no errors
return b;
}
...
threadlogstream.hpp
#include <iostream>
#include <streambuf>
#include <string>
//typedef std::basic_streambuf< char_type, traits_type> base_class;
//typedef typename base_class::int_type int_type;
class ThreadLogStream : public QObject, std::basic_streambuf<char> {
Q_OBJECT
public:
ThreadLogStream(std::ostream &stream);
~ThreadLogStream();
protected:
virtual int_type overflow(int_type v); // This gives no errors
virtual std::streamsize xsputn(const char *p, std::streamsize n);
}
Bitte helfen - Ich verliere das Haar über.
Dies soll nicht Kompilieren, wenn 'int_type' nicht im globalen Namespace angezeigt wird.Sie müssen einen qualifizierten Namen für den Rückgabetyp verwenden, wenn eine Funktion außerhalb der Klasse deklariert wird. – AnT