错误:获得通过"***"作为"this"....丢弃限定符
error: getting a passing "***" as "this" .... discards qualifiers
编译器告诉我不能在构造函数中进行赋值。我在另一个类中有非常相似的代码,它编译得很好。
依赖项.h
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;
}
Dependency::Dependency(std::function<void ()> const & func){
call_back = func;
}
首先,构造一个Dependency
对象,它是call_back
成员。然后它进入{}
,尝试将func
重新分配给call_back
,这是不允许的,因为call_back
是常量。
相反,我们必须告诉编译器第一次用func
构造call_back
,它使用了以下神奇的语法:
Dependency::Dependency(std::function<void ()> const & func)
:call_back(func)
{
}
您可以使用相同的技术为父类调用特定的构造函数。请注意,它忽略了您在这里使用的顺序,编译器将始终首先构造父类,然后按照在类定义中声明的顺序构造成员。
初始化后无法分配const
成员。您必须确保它在构造函数初始化列表中正确初始化。
Dependency::Dependency(std::function<void()> const& func) : call_back(func) {}
相关文章:
- C++ Boost - 序列化错误 - 将"const B"作为"this"参数
- 使用 std::function 作为成员函数,它捕获"this",并在析构函数之后从复制的 lam
- C++错误:将"const umap_int {aka const std::unordered_map<int, int>}"作为"this"参数会丢弃限定符 [-permissive]
- 错误:将 x 作为 x 的参数传递'this'丢弃限定符
- 为什么有必要将"this"指针作为"arg"参数传递给pthread_create
- 错误:将“const sdf”作为“this”参数传递会丢弃限定符 [-fpermissive]
- 使用 'this' 作为指向 CRTP 基类中派生类的指针
- 是否每个c++成员函数都隐式地将"this"作为输入
- 从 const 成员函数返回 'this' 作为非常量
- (C++)将"this"作为默认参数传递给静态方法
- 是否可以将动态强制转换"this"作为返回值?
- 使用 *this 作为返回值
- 在 QList 派生类的每个迭代器中将'this'作为第二个参数
- Qt 在构建移动到线程的 QObject 时将"this"作为父传递
- 什么时候应该使用指针或引用成员,什么时候应该在Qt中传递nullptr或this作为父指针
- 传递带有"this"作为参数的shared_ptr并将其存储在变量中
- 是否允许将 *this 作为接受引用(&)的函数的参数传递?
- C++ 使用"this"作为参数?
- 将"this"作为参数传递时从 const "No known conversion"
- 如何将'this'作为参数传递给另一个没有循环依赖关系的类构造函数?