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

Moh*_* Li 0 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(){
}
Run Code Online (Sandbox Code Playgroud)

当我编译时,我收到一个错误:

In constructor ‘bar::bar()’:
expected ‘{’ at end of input
Run Code Online (Sandbox Code Playgroud)

我在这里有点不知所措。

son*_*yao 5

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

bar() : foo_double() {}
Run Code Online (Sandbox Code Playgroud)

并且默认情况下会默认构造基类,因此您根本不需要这样做。只是

bar() {}
Run Code Online (Sandbox Code Playgroud)