构造函数错误:输入末尾的预期“{”

Constructor error: expected ‘{’ at end of input

本文关键字:错误 输入 构造函数      更新时间:2023-10-16

我在从超类从模板创建的子类中声明构造函数时遇到问题。

示例代码如下所示:

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() { }
              //     ^^^