另一个"invalid initialization of reference of type"错误
Another "invalid initialization of reference of type" error
我的类中有这样的容器:
protected:
std::map<const AAA*, std::set<BBB*> > conn;
以下两个getter函数都可以正常工作:
std::map<const AAA*, std::set<BBB*> > & getConnectors() {return connectors;}
std::map<const AAA*, std::set<BBB*> > getConnectors() const {return connectors;}
但是&和const加在一起,没有。给出错误:
std::map<const AAA*, std::set<BBB*> > & getConnectors() const {return connectors;} //error
错误为:
/home.../Multi.hpp:65:108: error: invalid initialization of reference of type ‘std::map<const AAA*, std::set<BBB*> >&’ from expression of type ‘const std::map<const AAA*, std::set<BBB*> >’
make[2]: *** [CMakeFiles/SimMobility.dir/main.cpp.o] Error 1
为什么我会得到这个,我该如何解决它,请
感谢
这不起作用,因为从const
方法来看,所有成员(除了mutable
)都应该被视为const
本身。
这意味着,不仅不能从该方法中修改它们,而且不能用指向非常数的指针指向它们或形成对非常数的引用。
因此,使用:
std::map<Foo, Bar> & GetConnectors();
const std::map<Foo, Bar> & GetConnectors() const;
最后一个应该写为
const std::map<const AAA*, std::set<BBB*> > & getConnectors() const {return connectors;}
相关文章:
- 使用 [] 运算符时"binding reference of type discards qualifiers"
- 继承类时"invalid use of incomplete type ‘class tree_node_t’"
- 模板类和'invalid use of incomplete type'错误
- 如何修复" State Error (active) E0513 a value of type "const wchar_t *" cannot be assigned to an entity o
- "invalid use of incomplete type" .解决循环依赖关系
- 我用C++做了一个计算器,但我对"type of calculator"的要求循环了两次。有人可以帮助指出我的错误吗?
- 如何修复此"argument of type incompatible with parameter"错误?
- 在 c++ 中,如果包含标头,为什么我会收到'does not a name of type'错误?
- 让编译器告诉哪些方法不具体,而不是错误'invalid new-expression of abstract class type'
- "base operand of ‘->’ has non-pointer type" 但它是指针
- "a value of type " void (exeCallback::*)(int) " cannot be assigned to an entity of type " void (*)(
- "Allocating an object of abstract class type"错误,尽管所有函数都有实现
- C++错误:" 'class' does not name a type"和"invalid use of incomplete type ‘struct ...' "
- 另一个"invalid initialization of reference of type"错误
- "invalid initialization of non-const reference of type..." 克隆() 函数错误
- 禁用杂散"warning: left shift count >= width of type"
- C++:"invalid initialization of non-const reference of type ‘List&’ from a temporary of type ‘List*’"
- prvalue of type std::nullptr_t
- 获取"terminating with uncaught exception of type std::length_error: vector"错误C++
- 如何调试提升元组错误"no operator found which takes a left-hand operand of type"