Ich lerne Lambda-Ausdruck in C++ 11x, ich googelte für die gleiche und stolperte unter Code-Snippet, wo Vorlage Typname als eine Vererbung verwendet.Verwendung der Vorlage in der Struktur in C++
Sprich
template< class T >
struct MyType : T {
....
Wenn ich den Code erfüllt es keine Störungen nicht geben. Aber als ich versuchte, eine Instanz für die Struktur MyType zu erstellen, führte dies zu einem Fehler.
// Example program
#include <iostream>
#include <string>
template< class T >
struct MyType : T {
static const auto data = 0;
static const size_t erm = sizeof(data);
};
int main()
{
struct MyType<int> my;
std::cout<<"\n test ";
return 0;
}
Fehler bei dem oben genannten Code kompiliert:
In instantiation of 'struct MyType<int>':
15:22: required from here
6:8: error: base type 'int' fails to be a struct or class type In function 'int main()':
15:22: warning: unused variable 'my' [-Wunused-variable]
Bitte etwas Licht auf dem gleichen hinzuzufügen. Warum Kompilierung gibt Fehler beim Instanziieren der Struktur? Auf der anderen Seite Warum Erklärung gibt keinen Fehler?
Vielen Dank im Voraus.
Der Typparameter wird als Basisklasse für Ihren Typ verwendet. 'int' ist keine Klasse und Sie können nicht von ihr erben. Sie benötigen eine andere Struktur (oder Klasse) als Basis. Ich denke, die Fehlermeldung message _base Typ 'int' ist keine Struktur oder Klasse_ ist ziemlich klar ... – Useless