C++ 为向量擦除删除隐式赋值运算符?

C++ 为向量擦除删除隐式赋值运算符?,c++,vector,operator-overloading,assignment-operator,C++,Vector,Operator Overloading,Assignment Operator,我有两个向量,我希望比较它们并删除重复项。如果我有两个向量vecA和vecB,我想删除vecA中出现在vecB中的元素。具体来说,我希望vecA被传递给一个方法,并在该方法中进行变异 #包括 #包括 #包括 M类{ 私人: const char COL[8]={'a','b','c','d','e','f','g','h'}; 公众: int aC、aR、dC、dR; M(整数a、整数b、整数c、整数d){ aC=a;aR=b;dC=c;dR=d; } 布尔运算符==(M&M){ bool sa

我有两个向量,我希望比较它们并删除重复项。如果我有两个向量
vecA
vecB
,我想删除
vecA
中出现在
vecB
中的元素。具体来说,我希望
vecA
被传递给一个方法,并在该方法中进行变异

#包括
#包括
#包括
M类{
私人:
const char COL[8]={'a','b','c','d','e','f','g','h'};
公众:
int aC、aR、dC、dR;
M(整数a、整数b、整数c、整数d){
aC=a;aR=b;dC=c;dR=d;
}
布尔运算符==(M&M){
bool sameC=(aC==m.aC&&dC==m.dC);
布尔-萨默=(aR==m.aR&&dR==m.dR);
返回(sameC和sameR);
}
};
B类{
公众:
std::vector foo(){
std::vec;
向量推回(M(1,3,2,4));
向量推回(M(1,2,3,4));
返回向量;
}
};
K类{
公众:
无效boo(B*B){
std::vec;
向量推回(M(1,2,3,4));
向量推回(M(2,3,4,5));

std::coutclass
M
有一个非静态成员变量
COL
,它是一个
const
事物的数组,因此编译器无法复制数组的内容


假设您想使
COL
成为静态的
,因此它不是每个
M
对象的子对象?

M
有一个非静态成员变量
COL
,该变量是
常量
事物的数组,因此编译器无法复制数组的内容


大概你是想让
COL
静态
,所以它不是每个
M
对象的子对象?

你确定你正在编译你发布的确切代码吗?顺便说一句,运行时逻辑有问题,
v.erase
的索引在某些情况下是不允许的inputs@MichaelKenzel我的错误是,在做MRE时,我遗漏了一个有几行出错。我更新了代码以重现错误。@gator哦,您的结构有一个成员是
const
。这意味着您无法修改该成员。因此,您无法分配给该成员。因此,隐式定义的赋值运算符被定义为deleted…您希望复制一个什么ssignment to do for this type!?您确定编译的代码与发布的代码完全一致吗?顺便说一句,存在运行时逻辑问题,
v.erase
的索引在某些情况下超出范围inputs@MichaelKenzel我的错误是,在进行MRE时,我错误地省略了几行。我已经更新了代码以重现错误。@gator好的,您的结构具有
const
的成员。该
const
表示您无法修改该成员。因此,您无法分配给该成员。因此,隐式定义的赋值运算符被定义为已删除…您希望复制赋值对此类型做什么!?
Size before: 2
Size after: 1