У меня проблемы с объявлением конструктора из подкласса, суперкласс которого создан из шаблона.
Пример кода выглядит так:
template <class T>
class foo{
public:
foo();
};
typedef foo<double> foo_double;
class bar : public foo_double
{
bar() : foo_double();
};
int main(){
}
когда я компилирую, я получаю ошибку:
In constructor ‘bar::bar()’:
expected ‘{’ at end of input
Я немного растерялся здесь.
Список инициализации членов может использоваться только с определением конструктора. Таким образом, вы должны определить это как
bar() : foo_double() {}
И базовый класс будет создан по умолчанию, поэтому вам вообще не нужно этого делать. Просто
bar() {}
bar() : foo_double();
Не конструктор
bar() : foo_double() { }
является.
Вы забыли фигурные скобки { }
bar() : foo_double() { }
// ^^^