构造函数错误:输入结束时预期为“{”

时间:2016-04-20 16:01:13

标签: c++ inheritance constructor

我无法在子类中声明构造函数,其子类是从模板创建的。

示例代码如下所示:

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

我在这里有点不知所措。

3 个答案:

答案 0 :(得分:4)

成员初始化列表只能与构造函数定义一起使用。所以你需要将其定义为

bar() : foo_double() {}

默认情况下,基类将默认构造,因此您根本不需要这样做。刚

bar() {}

答案 1 :(得分:1)

bar() : foo_double();

不是构造函数。

bar() : foo_double() { }

答案 2 :(得分:1)

你忘记了大括号{ }

bar() : foo_double() { }
              //     ^^^