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

当两端的参数看起来都正确时,为什么我会得到"error: no match for‘operator->*’“?

当两端的参数看起来都正确时,出现"error: no match for ‘operator->*’"的错误通常是因为以下几种情况:

  1. 缺少必要的头文件:在使用某个类的成员函数或成员变量时,需要包含该类的头文件。如果没有包含正确的头文件,编译器无法识别该类的成员,从而导致错误。解决方法是在代码中添加正确的头文件引用。
  2. 类型不匹配:该错误可能是因为两端的参数类型不匹配导致的。例如,一个参数是指针类型,而另一个参数是非指针类型,或者两个参数的类型不兼容。解决方法是确保两端的参数类型匹配,或者进行必要的类型转换。
  3. 操作符重载问题:该错误可能是因为使用了一个未定义或未重载的操作符。例如,使用了一个自定义类的指针,但该类没有重载箭头操作符(->)导致的错误。解决方法是检查代码中是否正确地重载了相关操作符。
  4. 命名空间问题:该错误可能是因为使用了不同的命名空间中的类或函数,导致编译器无法找到正确的匹配。解决方法是使用正确的命名空间限定符或在代码中添加正确的命名空间声明。

综上所述,当出现"error: no match for ‘operator->*’"错误时,需要检查代码中的头文件引用、参数类型、操作符重载和命名空间等方面,确保代码正确无误。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

C++20初体验——concepts

我们注意到两段错误都提到了operator-,实际上编译器认为错误在于std::sort中会把两个输入迭代器所属类型的实例相减,而std::list::iterator没有重载operator-运算符...简单需求 任意不以requires关键词开头的表达式都可以作为简单需求,当该表达式语法正确时需求满足。由于参数列表中的变量不实际存在,这个表达式当然也不会被求值。...预告一下,把参数代入一个concept可以得到true或false,而一个concept可以包含多个需求,所以嵌套需求就是多条已定义的需求的组合。...有些资料中的标准库concept是帕斯卡命名(PascalCase)的,因为最初的concept提案中是这样写的,原因可能是为了让它看起来属于新的C++20,或是与模板参数列表中类型大写的习惯一致。...函数模板与类模板的约束是类似的,只有满足约束时模板才能实例化;对于成员函数的约束,如果它作用于模板类的模板参数,当约束不满足时,并不是类模板不能被实例化,而是实例化后的模板类没有这个成员函数: #include

1.4K10
  • C++在设计和使用智能指针

    为一个C++用户的。使用指针可以算的上是常态,但在使用过程中。多的时间,可能是由于new要么malloc对象,上次忘记的释放结束(我会犯这样一个错误)。内存泄露。...事实上其原理是存储指向动态分配的指针对象类。通过引用计数的功能去控制,去正确的实现指针对象的销毁,从而避免内存泄露。 智能指针的原理是。...每次创建一个新的指针对象的时候,初始化指针并将引用计数置为1;当对象作为还有一个对象的副本而被创建的时候。拷贝构造函数拷贝指针并添加与之相应的引用计数。对于一个对象进行赋值时。...赋值操作符降低左操作数所指对象的引用计数(假设引用计数为减至0,则删除对象),而且添加右操作数所指对象的引用计数;调用析构函数时。构造函数降低引用计数(假设引用计数减至0,删除基础对象)。...->(){ if(ptr) return ptr; throw std::runtime_error("accessthroughNULLpointer"); } const T* operator

    39030

    类和对象竟是这样的(中集)

    无参的构造函数和全缺省的构造函数都叫默认构造函数,两个只能出现一个。 三.析构函数 1.概念 通过前面构造函数的学习,我们知道了一个对象是怎么来的,那他又是怎么销毁的呢?...2.特性 析构函数的特征如下: (1)析构函数名是类名前加~ (2)无返回值无参数 (3)一个类只能有一个析构函数,不能重载,当用户没有显示定义时,编译器会自动生成一个默认析构函数 (4)当对象生命周期结束时...拷贝构造函数:只有单个形参,该参数是对类类型对象的引用(一般前面加上const修饰),在通过类对象创建新的对象时自动调用。...(1)不能通过函数重载来创建新的操作符,例如:operator@ (2)运算符重载函数必须有一个参数为类类型 (3)对于内置类型的运算符来说,不能通过运算符重载改变它的值,例如:+ (4)实际看起来作为成员函数的运算符重载函数的参数要比设想时少一个..._day; } return left; } // 编译失败: // error C2801: “operator =”必须是非静态成员 为什么会报错呢?

    6910

    shell脚本知识记录

    正常读取变量并打印 echo $VAR2 #error 定义变量的值 用空格隔开了 echo $VAR3 #ok 作为一整个字符串 echo $VAR4 #error 变量定义的时候等号两端有空格 输出的结果为...duu -s #这个命令故意输错 echo duu -s的返回码为 $? exit 0 可以看到正确的结果为 28494656    . du -s的返回码为 0 ....在上一小节中说道,Shell中变量一般都是当字符串来处理,那我遇到数字运算该咋办呢??.../bin/bash # if [ expression1 operation expression2 ] if [ 5 -lt 4 ];  #注意[和]两端必须留空格 同时表达式两端都需要有空格 then...注意变量的字符串格式以及需要数学运算时的语法 注意变量赋值时等号两端一定不能有空格以及再取值时一定要加$ 平常的控制结束符号别忘了,比如fi,doen,esac等 忘了的时候来查查这个文件

    54430

    【译】ES10功能完全指南 - 还学的动吗?

    但是除了 Object.fromEntries大多数功能已经在 Chrome中实现,所以你为什么不尽早开始探索它呢?当所有浏览器开始支持它时,你已经获得了领先优势,这只是时间问题。...String.match, match只返回字符串参数第一个符合匹配的。...(注意: match匹配的结果存储在 matches[0]而非在 matches),在字符串 'hello'中搜索匹配 'l'只有 'l'被返回来。使用 regexp参数也是得到一样的结果。...let string = 'Hello' let ret = string.match(/l/g) // ['l', 'l'] Great...在低于 ES10的环境中我们得到了多个匹配结果,并且一直有效...所有的 objects(包括functions)都继承至基于原型的类继承。这意味着我们已经有了 function.toString()方法了。

    1.4K20

    二分查找详解

    我们这个算法中使用的是前者 [left, right] 两端都闭的区间。这个区间其实就是每次进行搜索的区间。 什么时候应该停止搜索呢?...但是如果我想得到 target 的左侧边界,即索引 1,或者我想得到 target 的右侧边界,即索引 3,这样的话此算法是无法处理的。...你非要用两端都闭的写法反而更简单,我会在后面写相关的代码,把三种二分搜索都用一种两端都闭的写法统一起来,你耐心往后看就行了。 2、为什么没有返回 -1 的操作?...left == right + 1,所以当 target 比 nums 中所有元素都大时,会存在以下情况使得索引越界: ?...当 target 比所有元素都小时,right 会被减到 -1,所以需要在最后防止越界: ?

    93110

    全网最全的,最详细的,最友好的 Typescript 新手教程

    当strict设置为true时,TypeScript会在你的代码中强制执行最大级别的类型检查: noImplicitAny true:当变量没有定义类型时,TypeScript会报错 always sstrict...当always sstrict设置为true时,TypeScript会在每个JavaScript文件的最顶部发出"use strict"。 还有更多可用的配置选项。...当strict设置为true时,你就会对TypeScript说“不要在我的代码中产生歧义”。 出于这个原因,我建议对TypeScript保持最大程度的严格,即使在一开始修复所有错误会比较困难。...涉足TypeScript类型 TypeScript围绕着类型展开,而我们的代码看起来根本没有类型。是时候加一些了。我们首先要确定函数参数。...另一方面,当接口用于描述代码中的一个或多个对象时,它就具有了实现。 扩展接口意味着借用它的属性并扩展它们以实现代码重用。但是等等,还有更多!你很快就会看到TypeScript接口也可以描述函数。

    6.1K40

    C++运算符重载详解(日期类实操)

    注意: 不能通过连接其他符号来创建新的操作符:比如operator@  重载操作符必须有一个类类型参数 用于内置类型的运算符,其含义不能改变,例如:内置的整型+,不 能改变其含义 作为类成员函数重载时,...其形参看起来比操作数数目少1,因为成员函数的第一个参数为隐藏的this .* :: sizeof ?...传参数时尽量都要用引用传参,可以提高传参的效率 传返回值时,如果返回值在调用完这个函数没有被销毁,需要引用返回,如果销毁了,直接返回。 多复用已经实现的函数! 关于返回值到底是引用还是不需要引用?...2、前置++后置++的重载区别  // 前置++和后置++都是一元运算符,为了让前置++与后置++形成能正确重载  // C++规定:后置++重载时多增加一个int类型的参数,但调用函数时该参数不用传递...不然可读性很差,像下面定义在类的内部: 重载流操作符为什么必须用引用?

    6910

    OMG,我从来没想过,二分查找还有诗?!

    我们这个算法中使用的是前者[left, right]两端都闭的区间。这个区间其实就是每次进行搜索的区间。 什么时候应该停止搜索呢?...但是如果我想得到target的左侧边界,即索引 1,或者我想得到target的右侧边界,即索引 3,这样的话此算法是无法处理的。...其实你非要用两端都闭的写法反而更简单,我会在后面写相关的代码,把三种二分搜索都用一种两端都闭的写法统一起来,你耐心往后看就行了。 2、为什么没有返回 -1 的操作?...left == right + 1,所以当target比nums中所有元素都大时,会存在以下情况使得索引越界: ?...至此,搜索右侧边界的二分查找的两种写法也完成了,其实将「搜索区间」统一成两端都闭反而更容易记忆,你说是吧?

    47530

    我作了首诗,保你闭着眼睛也能写对二分查找

    我们这个算法中使用的是前者[left, right]两端都闭的区间。这个区间其实就是每次进行搜索的区间。 什么时候应该停止搜索呢?...但是如果我想得到target的左侧边界,即索引 1,或者我想得到target的右侧边界,即索引 3,这样的话此算法是无法处理的。...其实你非要用两端都闭的写法反而更简单,我会在后面写相关的代码,把三种二分搜索都用一种两端都闭的写法统一起来,你耐心往后看就行了。 2、为什么没有返回 -1 的操作?...left == right + 1,所以当target比nums中所有元素都大时,会存在以下情况使得索引越界: 因此,最后返回结果的代码应该检查越界情况: if (left >= nums.length...,其实将「搜索区间」统一成两端都闭反而更容易记忆,你说是吧?

    49920

    梯度检验与高级优化

    ,尤其是当实现程序存在很多难于发现的bug时。...举例来说,索引的缺位错误(off-by-one error)会导致只有部分层的权重得到训练,再比如忘记计算偏置项。这些错误会使你得到一个看似十分合理的结果(但实际上比正确代码的结果要差)。...给定一个被认为能计算 J(θ)导数 的函数,我们可以用下面的数值检验公式: ? 计算两端是否一样来检验函数是否正确。 上式两端值的接近程度取决于J 的具体形式。...现在,考虑θ--->R[^n] 是一个向量而非一个实数(那么就有n个参数要学习得到),并且 J : R[^n]--->R。...得到的第i行减小EPSILON,然后我们可以对每个i检验侠士是否成立,进而验证g[i](θ)的正确性: ? 当用反射传播算法求解神经网络时,正确算法实现会得到: ?

    60390

    理论结合实际:如何调试神经网络并检查梯度

    现在,通过插入刚刚讨论的示例的值,来检查上面编写的方程式的正确性。所以,我会得到以下的东西。 ? 现在让我们计算它的实际导数。...请记住,[x₁, x₂ ... x_n]是输入,对于每个参数,我们都参数(w¹, b¹) (w², b²) … (wⁿ, bⁿ)。...因此,要实现梯度检查,您应该做的第一件事就是获取所有参数并将它们调整为巨大的矢量数据。因此,您要做的就是将所有这些w和b都进行调整,使其成为矢量。然后将所有这些向量连接成一个称为θ的巨型向量。...在实践中实施梯度检查 在许多项目中实施梯度检查时,我观察到value =10⁻⁶或10⁻⁷的值在大多数情况下都起作用。因此,使用上述相似性公式,您发现该公式产生的值小于10⁻⁷或10⁻⁸,这太好了。...这意味着您的导数近似很可能是正确的。如果是10⁻⁵,我会说没关系。但是我会仔细检查向量的分量,并检查是否一个分量太大,如果某些分量很大,则可能是您有一个错误。

    68610

    怎样通过读源码提高你的 JavaScript 知识

    另一个好处是增加你对良好应用架构的理解。虽然大多数开源项目通常与其存储库遵循相同的结构,但每个项目都包含差异。...我第一次阅读规范的时候是在分析 throw Error 和 throw new Error 之间的区别。...如果没有对代码进行深入研究,我会正在处理的项目中打开 /node_modules 文件夹,或者转到 GitHub 存储库。当我遇到错误或有趣的功能时,通常会发生这种情况。...,都是可选的,前三个参数根据参数是否存在及其值类型来定义它们的行为,这是通过 match 函数来实现的。...现在因为提供给 match 的第二个参数是导入 connect 的三个函数之一,我必须决定应该遵循哪个线程。

    95020

    【C++】类和对象练习——日期类的实现

    = month; _day = day; } 并且还指定了缺省参数,那这样的话在实例化一个对象时我们就可以自己给对象指定初值,我们输入的日期是啥,该对象就会被初始化为对应的日期。...C++规定:后置++重载时多增加一个int类型的参数,但调用函数时该参数不用传递(它的作用就是为了构成重载),编译器自动传递。 所以呢,这样搞就行了。...,那这里给大家提供一种比较好实现的思路: 我们拿到两个日期之后,先把较小的那个日期找出来,然后用一个计数器,统计较小日期++的次数,当两个日期相等时停止,++的次数就是相差的天数。...为什么我们的内置类型可以直接用,因为库里面已经对这些类型都进行了重载,所以可以自动识别类型,是根据操作数的不同类型进行匹配。 那我们现在自定义类型想用怎么办,是不是需要自己重载啊。...我们测试一下: 但是我们使用的时候发现报错了。 这里操作数是不是写反了,为什么? 对于函数重载来说,两个参数的话,第一个参数是左操作数,第二个参数是右操作数。

    33110

    第6章 | 表达式 | 优先级,块与分号,生命,if match

    (与大多数编程语言一样,当一个表达式包含多个相邻的运算符时,Rust 会根据运算符优先级来确定运算顺序。例如,在 limit 的,当块的最后一行不带分号时,就以最后这个表达式的值而不是通常的 () 作为块的值。...Rust 也有闭包,闭包可以看到封闭块作用域内的变量。请参阅第 14 章。) 块甚至可以包含完整的模块。这可能看起来有点儿过分(真的需要把语言的每一部分都嵌进任何其他部分吗?)...编译器可以使用跳转表来优化这种 match,就像 C++ 中的 switch 语句一样。当 match 的每个分支都生成一个常量值时,也会应用与 C++ 类似的优化。...Rust 会从第一项开始依次根据每个模式检查给定的 value。当模式能够匹配时,对应的 expr 会被求值,而当这个 match 表达式结束时,不会再检查别的模式。至少要有一个模式能够匹配。

    13410

    Rust入坑指南:亡羊补牢

    当不符合条件时,断言会引发线程恐慌(panic!)。 Rust处理异常的方法有4种:Option、Result、线程恐慌(Panic)、程序终止(Abort)。接下来我们对这些方法进行详细介绍。...Result用于处理真正意义上的错误,例如,当我们想要打开一个不存在的文件时,或者我们想要将一个非数字的字符串转换为数字时,都会得到一个Err(E)结果。...Rust在std::io模块定义了统一的错误类型Error,因此我们在处理时可以分别匹配不同的错误类型。...在Rust中,无法处理的错误就会造成线程恐慌,手动执行panic!宏时也会造成恐慌。当程序执行panic!宏时,会打印相应的错误信息,同时清理堆栈并退出。...总结 至此,Rust处理错误的方法我们已经基本介绍完了,为什么说是基本介绍完了呢?

    86410

    C++:类与对象(2)

    对于内置类型来说,销毁时是不需要进行资源清理的,最后系统的内存会将其回收的(因为我们把内置类型成员恢复成0是没有意义的,因为他不管是多少,当内存被系统回收后,最后都是会被覆盖的,不用多此一举) 2、我们之前学过...思考: 1、拷贝明明是一个对象拷贝给另一个对象,为什么这边只有一个参数呢?...,其含义不能改变,例如:内置的整型+,不能改变其含义 4、作为类成员函数重载时,其形参看起来比操作数数目少1,因为成员函数的第一个参数为隐 藏的this(所以至少有一个类型参数就够了) 5、....C++规定:后置++重载时多增加一个int类型的参数,但调用函数时该参数不用传递,编译器自动传递 int只是用来占位,没有实际意义  前置++: Date& operator++() { _day +...,当取d1的地址传给隐藏的*this时,出现了权限放大!!

    13410
    领券