编译器告诉我我不能在构造函数中进行赋值.我在另一个类中有非常相似的代码,它编译得很好.
class Dependency {
public:
Dependency(std::function<void ()> const & func);
private:
std::function<void ()> const call_back;
};
Dependency::Dependency(std::function<void ()> const & func){
call_back = func;
}
Run Code Online (Sandbox Code Playgroud)
Dependency::Dependency(std::function<void ()> const & func){
call_back = func;
}
Run Code Online (Sandbox Code Playgroud)
首先,这构造了一个Dependency对象,它是它的call_back成员.然后它进入{},它试图重新分配func到call_back,这是不允许的,因为call_back是常量.
相反,我们必须告诉编译器构造call_back与func第一次使用这个神奇的语法:
Dependency::Dependency(std::function<void ()> const & func)
:call_back(func)
{
}
Run Code Online (Sandbox Code Playgroud)
您使用相同的技术来调用父类的特定构造函数.请注意,它忽略了您在此处使用的顺序,编译器将始终首先构造父类,然后按照它们在类定义中声明的顺序构造成员.
| 归档时间: |
|
| 查看次数: |
54 次 |
| 最近记录: |