首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

错误:'operator=‘不匹配(操作数类型为'Person’和'Person*')

错误:'operator='不匹配(操作数类型为'Person'和'Person*')

这个错误是由于在C++中,赋值运算符(operator=)的重载不匹配导致的。具体来说,错误信息指出了操作数类型为'Person'和'Person',意味着在赋值运算符重载函数中,左操作数是一个'Person'类型的对象,而右操作数是一个'Person'类型的指针。

要解决这个错误,我们需要确保赋值运算符重载函数的参数类型与实际使用时的操作数类型匹配。在这种情况下,我们可以做出以下修改:

  1. 如果我们想要将指针类型的右操作数赋值给对象类型的左操作数,我们可以修改赋值运算符重载函数,使其接受一个指针类型的参数,并在函数体内进行适当的处理。例如:
代码语言:txt
复制
Person& operator=(const Person* other) {
    // 在这里进行适当的处理,将指针类型的other赋值给当前对象
    return *this;
}
  1. 如果我们想要将对象类型的右操作数赋值给对象类型的左操作数,我们可以修改赋值运算符重载函数,使其接受一个对象类型的参数,并在函数体内进行适当的处理。例如:
代码语言:txt
复制
Person& operator=(const Person& other) {
    // 在这里进行适当的处理,将对象类型的other赋值给当前对象
    return *this;
}

需要注意的是,赋值运算符重载函数应该返回一个引用类型的值,以便支持连续赋值操作。

关于赋值运算符重载的更多信息,可以参考以下链接:

请注意,以上答案中没有提及任何特定的云计算品牌商,如腾讯云等。

相关搜索:不匹配‘operator>>’(操作数类型为‘QDataStream’和‘QJsonObject’)不匹配"operator<<“(操作数类型为”std::ostream“修复方法:错误:'operator=‘不匹配(操作数类型为'Estado’和'Estado*')错误:“operator*”没有匹配项(操作数类型为“const llvm::DataLayout”)不匹配'operator<<‘(操作数类型为'std::ostream {aka std::basic_ostream<char>}’无法编译捕获库:不匹配‘operator!=’(操作数类型为‘std::basic_istream<char>’和‘long int’)错误:不匹配'operator*‘(操作数类型为' std::string {aka std basic_string<char>}’和{aka std basic_string<char>}')‘operator=’没有匹配项(操作数类型是'std::vector<int>‘和'int’不匹配'operator=‘(操作数类型为'__gnu_cxx::__alloc_traits<std::allocator<std::vector<int> >>不匹配‘operator<<’(操作数类型为‘std::ostream’{又名‘std::basic_ostream<char>’}和‘const std::type_index’)获取错误:尽管重载了<<运算符,但不匹配'operator<<‘(操作数类型为'std::basic_ostream<char>’和'Complex')如何修复错误:在使用字符串和堆栈时,'operator<<‘(操作数类型为'std::ostream {aka std::basic_ostream<char>}’和'void')不匹配C++ Error project.cpp:11:20: error:'operator[]‘不匹配(操作数类型为'std::__cxx11::list<int>’和'int')错误:类型不匹配:推断的类型为Unit,但应为Boolean在operator>> :C++的实现过程中出错没有运算符匹配这些操作数操作数类型为: std::istream >> const双重错误运算符和操作数不一致[类型不匹配]“operator=”没有匹配项(操作数类型是“Object”和“<带括号的初始值设定项list>”)从源代码编译Linux内核2.6.10 -错误:操作数类型与‘`mov’不匹配错误:‘operator<<’没有匹配项(操作数类型是‘std::ostream’{又名‘std::basic_ostream<char>’}和‘std::_List_iterator<int>’)错误“操作数类型Module.Category和ULocale.Category不兼容”
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

C++编程语言中重载运算符(operator)介绍「建议收藏」

1 概述 1.1 What operator 是 C++ 的一个关键字,它运算符(如 =)一起使用,表示一个运算符重载函数,在理解时可将 operator 待重载的运算符整体(如 operator=...示例代码如下: #include using namespace std; class person { public: int age; }; // 左操作数类型必须被显式指定...// 此处指定的类型person类 bool operator==(person const& p1 ,person const& p2) { if (p1.age == p2.age)...: 如果一个重载运算符是类的成员函数,那么只有当与它一起使用的左操作数是该类的对象时,该运算符才会被调用;而如果该运算符的左操作数确定为其他的类型,则运算符必须被重载全局函数; C++ 要求’=’、'...[]’、'()’、’->’运算符必须被定义类的成员函数,把这些运算符通过全局函数进行重载时会出现编译错误; 如果有一个操作数是类类型(如 string 类),那么对于对称操作符(比如操作符“==”),

3.3K31

C++运算符重载(四)之赋值运算符重载

赋值运算符重载 c++编译器至少给一个类添加4个函数 默认构造函数(无参,函数体空) 默认析构函数(无参,函数体空) 默认拷贝构造函数,对属性进行值拷贝 赋值运算符 operator=, 对属性进行值拷贝...加上运算符 参数:有几个操作数就有几个参数,参数类型就是要操作对象的类型 返回值:看运算符运算后的返回值是什么 //存在this指针,要少传一个参数 bool operator==(const Date...如果写,会默认生成赋值重载,拷贝构造行为类似,内置类型会完成值拷贝,自定义类型成员会调用他的赋值重载 //赋值重载 Date operator=(const Date& d)//返回值类型是Date...d1 = d3 = d2;//连续赋值,链式编程思想 d1.print(); return 0; } 注意 不能通过连接其他符号来创建新的操作符:比如operator@ 重载操作符必须有一个类类型或者枚举类型操作数...用于内置类型的操作符,其含义不能改变,例如:内置的整型 + , 能改变其含义 作为类成员的重载函数时,其形参看起来比操作数数目少1成员函数的操作符有一个默认的形参this,限定为第一个形参 .

82020
  • 掌握这 10 个 JavaScript 新的特性,让编写的代码既干净又有趣

    原型.replaceAll replaceAll () 返回一个新字符串,其中模式的所有匹配项都被替换项替换。模式可以是字符串或正则表达式,替换项可以是字符串或为每次匹配执行的函数。...String.prototype.trimStart() / String.prototype.trimEnd() String.prototype.trim () 用于去除头部尾部的空格、换行等,现在头部尾部分别由...将 catch 参数改为 optional 在 try...catch 错误处理期间,如果没有向 catch 传递参数,代码将报告错误。在新规范中,可以省略 catch 绑定参数括号。...当左操作数 null 或未定义时,它返回右操作数。否则,它返回左边的操作数。 const str = null ??...直接报告错误

    87300

    C++运算符重载(五)之关系运算符重载

    关系运算符重载 作用:重载关系运算符,可以让两个自定义类型对象进行对比操作 示例: class Person { public: Person(string name, int age) {...this->m_Name = name; this->m_Age = age; }; bool operator==(Person & p) { if (this->m_Name ==...a("孙悟空", 18); Person b("孙悟空", 18); if (a == b) { cout << "ab相等" << endl; } else { cout <...加上运算符 参数:有几个操作数就有几个参数,参数类型就是要操作对象的类型 返回值:看运算符运算后的返回值是什么 //存在this指针,要少传一个参数 bool operator==(const Date...如果写,会默认生成赋值重载,拷贝构造行为类似,内置类型会完成值拷贝,自定义类型成员会调用他的赋值重载 //赋值重载 Date operator=(const Date& d)//返回值类型是Date

    70620

    分享一些对你有帮助的JavaScript技巧

    此外,用动态值(或表达式)连接字符串可能会导致挫折错误。...我们有一个简单的文本框,类型数字。这意味着它只接受数字作为输入。它有一个事件处理程序来处理加键事件。...但它返回的是一个字符串类型的值。现在,我将有一个额外的头痛问题,就是如何将它解析一个整数。如果输入框接受浮动数(比如,16.56),那么parseFloat()怎么办?...年龄将被计算35,这是意想不到的行为。 进入空值凝聚运算符(??)。它是一个逻辑运算符,当其左手操作数空或未定义时,返回其右手操作数,否则返回其左手操作数。 要用??运算符重写上述代码。...---- 解构 将数组元素对象属性分解变量的技术称为,反结构。让我们通过几个例子来看看。

    1.2K20

    分享一些你可能不知道的但却很有帮助的JavaScript小技巧

    此外,用动态值(或表达式)连接字符串可能会导致挫折错误。...我们有一个简单的文本框,类型数字。这意味着它只接受数字作为输入。它有一个事件处理程序来处理加键事件。...但它返回的是一个字符串类型的值。现在,我将有一个额外的头痛问题,就是如何将它解析一个整数。如果输入框接受浮动数(比如,16.56),那么parseFloat()怎么办?...年龄将被计算35,这是意想不到的行为。 进入空值凝聚运算符(??)。它是一个逻辑运算符,当其左手操作数空或未定义时,返回其右手操作数,否则返回其左手操作数。 要用??运算符重写上述代码。...首先,定义一个函数来抛出一个带有错误信息的错误

    1.1K50

    TypeScript 空值合并运算符(??)

    fee 可选链,以避免在显示订阅额时出现错误。但是,假设我们想要在该用户没有开通订阅功能的情况下,显示 “尚未开通订阅”。...当左侧操作数 null 或 undefined 时,其返回右侧的操作数。否则返回左侧的操作数。 与逻辑或(||)操作符不同,逻辑或会在左操作数 falsy 值时返回右侧操作数。...也就是说,如果你使用 || 来某些变量设置默认的值时,你可能会遇到意料之外的行为。比如 falsy 值(’’、NaN 或 0)时。...直接与 AND(&&) OR(||)操作符组合使用 ?? 是不行的。这种情况下会抛出 SyntaxError。 // '||' and '??'...六、参考资源 nullish-coalescing-with-react-and-typescript MDN - Nullish_coalescing_operator 深入理解 TypeScript

    3.5K10

    从零开始学C++之STL(九):函数适配器bind2nd 、mem_fun_ref 源码分析、函数适配器应用举例

    一、适配器 三种类型的适配器: 容器适配器:用来扩展7种基本容器,利用基本容器扩展形成了栈、队列优先级队列 迭代器适配器:(反向迭代器、插入迭代器、IO流迭代器) 函数适配器:函数适配器能够将仿函数另一个仿函数...value 分别用modulus() 2 初始化。...        return (_Left % _Right);     } }; 也就是如果左操作数是偶数则返回0,奇数% 2 == 1, 返回真。...这里绑定的是左操作数。...第二行中mem_fun_ref 接受两个参数,明显是重载的版本,它将一元函数转换为二元函数对象,而bind2nd 再将其转化为一元函数对 象,即绑定了第二个参数"person: ",跟踪源码可以看见这样的函数调用

    94601

    C++核心编程笔记合集

    加上运算符 参数:有几个操作数就有几个参数,参数类型就是要操作对象的类型 返回值:看运算符运算后的返回值是什么 //存在this指针,要少传一个参数 bool operator==(const Date...如果写,会默认生成赋值重载,拷贝构造行为类似,内置类型会完成值拷贝,自定义类型成员会调用他的赋值重载 //赋值重载 Date operator=(const Date& d)//返回值类型是Date...用于内置类型的操作符,其含义不能改变,例如:内置的整型 + , 能改变其含义 作为类成员的重载函数时,其形参看起来比操作数数目少1成员函数的操作符有一个默认的形参this,限定为第一个形参 ....加上运算符 参数:有几个操作数就有几个参数,参数类型就是要操作对象的类型 返回值:看运算符运算后的返回值是什么 //存在this指针,要少传一个参数 bool operator==(const Date...如果写,会默认生成赋值重载,拷贝构造行为类似,内置类型会完成值拷贝,自定义类型成员会调用他的赋值重载 //赋值重载 Date operator=(const Date& d)//返回值类型是Date

    98010

    【C++修炼之路】15.C++继承

    s; // 天然的,中间不存在类型转换:产生临时变量 p = s; Person& rp = s;//验证了产生临时变量,因为不用const rp....即便fun()传值,也不会调用父类的fun(),因为二者之间不是在同一个作用域因此构成函数重载,反而会报错,因为正常的函数一样,参数的数量匹配导致报错。...而现在我们学习了继承,知道基类可以传给派生类成员变量以及成员函数,但这默认成员函数对于每一个类来说都必须是自己的,并且基类的成员变量有可能比派生类的成员变量的数量匹配,种种情况都表明,派生类的默认成员函数不能使用基类的默认成员函数...4.2 派生类的拷贝构造函数 接着上段构造函数的代码,如果写拷贝构造,编译器会默认生成: 对于拷贝构造,我们需要拷贝构造的有三部分:基类继承下来的类型、内置类型、自定义类型。...如果写拷贝构造,完全可以解决基类继承下来的内置类型,因为属于基类的类型会自动调用基类的拷贝构造,上面的结果也可以证实这一点,而内置变量的拷贝构造会随着初始化列表进行值拷贝,因此写拷贝构造的结果与类对象中的情况是一样的

    54400

    C# 9.0新特性介绍

    方法签名取决于记录类型是否密封以及直接基类是否对象。 记录应具有以下功能: 相等性是基于值的,包括检查类型是否匹配。 例如,即使两条记录的名称相同,Student 也不能等于 Person。...除了熟悉的 Equals 重载、operator == operator != 外,编译器还会合成新的 EqualityContract 属性。 该属性返回与记录类型匹配的 Type 对象。...这意味着,绝不会将 Student 视为与同名的 Person 相等。 两条记录的类型必须匹配,而且记录类型之间共享的所有属性也必须相等。 记录还具有合成的构造函数用于创建副本的“克隆”方法。...如果编译器在多个源文件中找到顶级语句,则是错误的。 如果将顶级语句与声明的程序入口点方法(通常 Main 方法)结合使用,也会出现错误。...求反 not 模式要求模式匹配 关系模式要求输入小于、大于、小于等于或大于等于给定常数。

    2K20

    【C++】继承(上)

    继承基类成员访问方式的变化 ---- 权限一般 public>protected>private 所以对于基类的public成员protected成员,继承取权限小的那一个 ---- 如果基类...---- protectedprivate的区别 protectedprivate 认为都是一样的,都是在类里面可以访问,类外不能访问 只有在继承的时候才有区别,基类设置private后,子类继承不可见...默认访问限定符 这里的访问限定符可以选择写,使用默认的 使用class ,默认访问限定符 private 使用 struct ,默认访问限定符 public 总结 实际当中基类都是public...基类派生类对象的赋值转换 在共有继承的前提下,将子类对象赋值给父类对象 天然支持,不存在类型转换发生,认为子类对象就是特殊的父类对象 ---- ---- 在Student类中,把父类的那部分找到,...依次传递过去(具体如何切割后面会讲) 这个过程被叫做 切割或者切片 ---- 由于d是double类型,而i是int类型,将d赋值给i会发生隐式类型转换,产生一个int类型的临时变量,再将临时变量传给

    27910

    Flutter-从入门到项目 05:Dart语法快速掌握(下)

    List 类型,你将会看到该类型实际上List,其中标记表示此表一个泛型类型(或为参数化结构)—— 一种含有正规类型参数的类型。按照惯例,类型变量通常单字符名称,例如 E,T,S,K,以及V。...泛型可以让你能共享多个类型的一个接口实现方式 它在调试模式以及静态分析的错误预警中仍然很有优势。...举个例子,当你在创建一个接口来缓存一个对象时: // 泛型可以让你能共享多个类型的一个接口实现方式, // 它在调试模式以及静态分析的错误预警中仍然很有优势 abstract class KCObjectCache...来确认前操作数不为空, 常用来替代. , 避免左边操作数 null 引发异常。 使用 runtimeType 方法,在运行中获取对象的类型

    1.4K20

    Chapter 5: Rvalue References, Move Semantics, PF

    这样它就会产生许许多多的参数类型的重载实例函数。 在编译器类自动生成移动拷贝构造函数时,也不能使用重载过的通用引用参数构造函数,因为通用引用参数的构造函数在匹配顺序上会在其他重载函数之前。...通用引用参数一般会对任何传入的参数产生匹配,但是如果通用引用是包含其他非通用引用参数的参数列表中的一部分,那么在非通用引用参数上的匹配会使得已经匹配的通用引用参数无效。这就是标签分发的基础。...:is_same会把PersonPerson&判断不同类型,因此我们希望会略掉对这个Person类型的一切修饰符,拿到最原始的类型,这需要用到std::decay::type //无论是否是引用...另一个问题是出现错误时,错误信息的易理解性,因为完美转发不会做参数类型是否符合最内层函数的类型,如果中间经过许多层转发,那么最后如果出现类型匹配错误,就会输出大量的错误信息,此时需要在适当的位置做一次预先判断...这种情况下出错的类型有: 编译器无法推导出一个类型:只要参数中有一个及以上无法推导出类型,就无法编译 编译器推到出错误类型:要么是推导出来的类型使得无法编译,要么是推到出来的类型在重载函数情况下匹配错误的函数调用

    5.1K40

    C++中运算符的重载

    在这个过程中,p2 作为参数传递给 operator,完成相加后,由于返回类型值传递,因此 return *this其实就是返回 p1 拷贝出来的一个副本,必须在调用时重新赋值。...根据对比发现,左移运算符需要两个参数,cout person,且已知 cout 属于 ostream 类。...25 这种写法与我么通常使用的方式刚好相反,因此左移运算符一般采取成员函数的形式来实现,通常使用全局函数来实现。...// 返回值 ostream 类型,又因为 cout 只有一个,因此以引用的方式返回 ostream& operator<<(ostream& cout, person p){ cout << "name...); cout << p1 << p2; 输出结果: name: 张三 age: 25 name: 李四 age: 27 三、递增运算符重载 递增运算符++有两种表现形式,分为前置后置

    88400

    C# 9.0 中的新增功能

    以前,.NET 类型主要分为引用类型(包括类匿名类型类型(包括结构元组)。 虽然建议使用不可变的值类型,但可变的值类型通常不会引入错误。...方法签名取决于记录类型是否密封以及直接基类是否对象。 记录应具有以下功能: 相等性是基于值的,包括检查类型是否匹配。 例如,即使两条记录的名称相同,Student 也不能等于 Person。...正确的副本构造必须包括继承层次结构开发人员添加的属性。 可通过修改复制记录。 这些复制修改操作支持非破坏性转变。 除了熟悉的 Equals 重载、operator == operator !...该属性返回与记录类型匹配的 Type 对象。 如果基类型 object,则属性 virtual。 如果基类型是其他记录类型,则属性 override。...求反 not 模式要求模式匹配 关系模式要求输入小于、大于、小于等于或大于等于给定常数。

    1.7K20
    领券