Bonjour,
j'ai récemment installé Linux, et g++ (version 4.2), et en compilant ce programme:
J'ai une erreur: "i was not declared in this scope" pour la fonction get_data() de wrapper.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 #include <iostream> template <class T> class smart_ptr { public: T data; int i; virtual int get_data() { return i; } }; template <class T> class wrapper : public smart_ptr<T> { virtual int get_data() {return i; } }; int main() { std::cout << "Hello world!" << std::endl; return 0; }
Si au lieu de mettre public: smart_ptr<T> je mets un type non template tout va bien (mais j'ai besoin des templates!!)
Pour réussir à le faire passer je dois faire:
C'est moche!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 template <class T> class wrapper : public smart_ptr<T> { virtual int get_data() {return smart_ptr<T>::i; } };
Est-ce que j'ai loupé une option de compilation quelque part, parce que je trouve ça vraiment louche?
Merci
Partager