Passage de visual à linux: erreur étrange de template
Bonjour,
j'ai récemment installé Linux, et g++ (version 4.2), et en compilant ce programme:
Code:
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:
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 :D