У меня есть базовый класс, который выглядит следующим образом.
template<typename T>
class Base
{
public:
Base(int someValue);
virtual T someFunc() =0;
};
template<typename T>
Base<T>::Base(int someValue)
{}
А потом следующее.
#include "base.hpp"
class Foo
: public Base<Foo>
{
public:
Foo(int someValue);
virtual Foo someFunc();
};
Foo::Foo(int someValue)
: Base(someValue)
{}
Я получаю следующую ошибку от gcc 4.2.1.
error: class ‘Foo’ does not have any field named ‘Base’
Я должен упомянуть, что это прекрасно компилируется на моей машине Fedora, которая работает под управлением gcc 4.6.2 Эта ошибка возникает при компиляции на моем компьютере OS X Lion.
Заранее спасибо за помощь.
EDIT
Проблема в том, что я не указываю тип шаблона в классе Foo при вызове конструктора. Следующее исправляет ошибку в os x.
: Base<Foo>(someValue, parent)
EDIT
Да, это похоже на ошибку. То, что я упоминал ранее, исправляет ошибку в OS X, и код исправляется в Fedora с этим исправлением. Пойду посмотрю, есть ли обновление для gcc в os x.