Ich versuche eine Template-Klasse zu instanziieren, die in einer Klasse enthalten ist, die als Template-Parameter angegeben wird. Dies könnte einfacher sein, mit einem Beispiel zu verstehen:Deklarieren von Variablen in einer Klasse mit Template-Klasse Geben Sie den Template-Parameter ein
struct A {
static constexpr int a = 42;
class B {
int b;
};
template<typename X>
class C {
X c;
};
};
template<typename U, typename T>
class D {
int a = U::a;
using B = typename U::B;
B b;
//using C = typename U::C;
// C<T> c;
A::C<T> e;
};
int main(void) {
D<A, int> d;
return 0;
}
Wenn ich die kommentierten Zeilen Kommentar-, die Compiler mir einen Fehler gibt, die sagen C nicht eine Vorlage. Ich habe andere Ansätze versucht, diese Variable zu instanziieren, aber es hat nicht funktioniert. Ich hätte gerne das Äquivalent der e-Variablen, aber benutze den U-Typnamen.
hatte ich das schon versucht, und ich diesen Fehler bekommen hatte: Fehler: erwartet ‚‘ vor ‚<‘ token mit C = Typnamen U :: C –
Dam
@Dam Was Compiler? Ich habe eine Demo [hier] (http://rexttester.com/YIOAX7967) versucht. – songyuanyao
Nein, es ist jetzt in Ordnung. Vielen Dank :) – Dam