Problem med klasse afledt af en template
Jeg er begynder, men har googlet diverse tutorials m.m. om emnet. Jeg synes det virker ulogisk at følgende (hjernedøde eksempel-) kode ikke kan kompilere:#import <iostream>
#import <vector>
using namespace std;
template< class T >
class a : public vector< T > {
public:
void speak() {
push_back( 4 );
cout << at( 1 ) << endl;
}
};
int main() {
a< int > test;
test.push_back( 3 );
test.speak();
return 0;
}
jeg får følgende fejl:
test.cpp: In member function 'void a<T>::speak()':
test.cpp:10: fejl: there are no arguments to 'push_back' that depend on a template parameter, so a declaration of 'push_back' must be available
test.cpp:10: fejl: (if you use '-fpermissive', G++ will accept your code, but allowing the use of an undeclared name is deprecated)
test.cpp:11: fejl: there are no arguments to 'at' that depend on a template parameter, so a declaration of 'at' must be available
Hvis jeg derimod retter "at( 1 )" til "this->at( 1 )" og "push_back( 4 )" til "this->push_back( 4 )", brokker compileren sig ikke.
Men egenskaber ved superklassen er da normalt tilgængelige i en underklasse, uden brug af "this" ??