Ich schreibe benutzerdefinierte Lazy String-Klasse.Mitglied des abhängigen typedef nicht definiert
template <typename charT, typename traits = std::char_traits<charT>>
class lazy_basic_string
{
class char_proxy
{
char_proxy& operator=(charT ch);
};
char_proxy operator[](size_type i);
}
Dann möchte ich diese Methoden außerhalb der Klassendeklaration definieren.
template <typename charT, typename traits>
using char_proxy = typename lazy_basic_string<charT, traits>::char_proxy;
template <typename charT, typename traits>
char_proxy<charT, traits>& char_proxy<charT, traits>::operator=(charT ch)
{
...
}
Aber ich habe Fehler kompilieren:
cannot define member of dependent typedef char_proxy
So kann ich nicht herausfinden, was ist hier Problem. Warum kann der Compiler die Verknüpfung char_proxy anstelle von lazy_basic_string :: char_proxy nicht verwenden?
Ich benutze g ++ 4.7. Scheint, dass die Definition von Klassenmitgliedern durch Vorlagenalias nicht unterstützt wird, daher ist es besser, diese Funktion zu vermeiden. – eucpp