У меня есть базовый класс, который выглядит следующим образом.
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.
Заранее благодарим за помощь.
ИЗМЕНИТЬ
Проблема заключается в том, что я не указываю тип шаблона в классе Foo при вызове конструктора. Следующее исправление ошибки в os x.
: Base<Foo>(someValue, parent)
ИЗМЕНИТЬ
Да, это похоже на ошибку. То, что я упомянул ранее, исправляет ошибку в os x и компилирует код в Fedora с этим исправлением. Пойдем и посмотрим, есть ли обновление gcc в os x.