2016-05-28 19 views
2
#include <iostream> 
using namespace std; 

template <class T> 
class C1 
{ 
public: 
    int n; 
    C1(int a) 
    { 
     n=a; 
    } 
    T mat[50][50]; 
    void readmat() 
    { 
     int i,j; 
     for(i=1; i<=n; i++)for(j=1; j<=n; j++)cin>>mat[i][j]; 
    } 
    void showmat() 
    { 
     int i,j; 
     for(i=1; i<=n; i++) 
     { 
      cout<<endl; 
      for(j=1; j<=n; j++)cout<<mat[i][j]<<" "; 
     } 
    } 
}; 

template <class T> 
class C2: public C1<T> 
{ 
    C2(int a): C1(a) {}; 

}; 

Immer, wenn ich es laufen lasse, erhalte ich die Fehlermeldung:C++ Template-Klasse Vererbung

In constructor C2::C2(int)':

error: class 'C2' does not have a field named 'C1'

Wenn mir jemand erklären könnte, was ich falsch gemacht habe, würde ich meistens es zu schätzen wissen.

+1

'C2 (int a): C1 (a) {};' sein sollte 'C2 (int a): C1 (a) {} ; ' –

+0

Könnten Sie bitte auch meinen Beitrag beantworten? –

Antwort

6

Sie sollten die Template-Parameter auf Basisklasse hinzufügen

template <class T> 
class C2: public C1<T> 
{ 
    C2(int a): C1<T>(a) {}; 

}; 
+0

Könnten Sie bitte auch meinen Beitrag beantworten? –