Bonjour,

j'ai récemment installé Linux, et g++ (version 4.2), et en compilant ce programme:

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;
}
J'ai une erreur: "i was not declared in this scope" pour la fonction get_data() de wrapper.

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:

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; }
};
C'est moche!

Est-ce que j'ai loupé une option de compilation quelque part, parce que je trouve ça vraiment louche?

Merci