[英]error: non-static reference member - can't use default assignment operator
我有一个问题......好吧,我不确定。 我真的不知道这意味着什么。 我使用了下图所示的相同范例,我在 class 中创建了一个 object,并为该 object 提供了对 ZA2F2ED4F8EBC2CBB4B4C2 的引用。 此设计用作事件处理程序。
我添加了一段非常不相关的代码,在其中循环遍历对象的 map 并重新分配它们。 由于使用了=
运算符,它提出了一个问题。 但我仍然不知道它在抱怨什么。
// Example program
#include <iostream>
#include <string>
#include <map>
class A {
public:
class Handler {
public:
Handler(A &a):a(a){}
virtual void HandleIt(){
a.DoThings();
}
A &a;
};
A():my_handler(*this){}
Handler my_handler;
void DoThings(){
std::cout << "Im doing things";
}
};
std::map<std::string, A> my_map;
void ReplaceInMap(A &a){
std::map<std::string, A>::iterator it;
for(it = my_map.begin(); it != my_map.end(); ++it){
it->second = a;
}
}
int main()
{
A a;
A b;
A c;
my_map.insert(std::make_pair<std::string, A>("A!", a));
my_map.insert(std::make_pair<std::string, A>("B!", b));
my_map.insert(std::make_pair<std::string, A>("C!", c));
ReplaceInMap(a);
}
C++ 98
In member function 'A::Handler& A::Handler::operator=(const A::Handler&)':
8:15: error: non-static reference member 'A&A::Handler::a', can't use default assignment operator
In member function 'A& A::operator=(const A&)': 6:7:
note: synthesized method 'A::Handler& A::Handler::operator=(const A::Handler&)' first required here
In function 'void ReplaceInMap(A&)': 29:20: note: synthesized method 'A& A::operator=(const A&)' first required here
这个错误是什么意思? 问题是什么?
这个错误是什么意思?
这意味着它的字面意思。 不能使用A
的赋值运算符,因此不能使用Handler
。
要点:
问题是什么?
您尝试分配一个不可分配的 class。
您的选择是:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.