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

为什么我的类函数在main中是“未定义的”?我在代码中遗漏了什么吗?

在代码中,当你的类函数在main函数中被调用时出现“未定义的”错误,通常是因为你没有正确定义或实现该类函数。

可能的原因和解决方法如下:

  1. 类函数未正确定义:请确保你在类的声明中正确定义了该函数,并在类的定义外部实现了该函数。例如,如果你的类名为MyClass,函数名为myFunction,则应在类的声明中添加函数原型:void myFunction();,并在类的定义外部实现该函数:void MyClass::myFunction() { // 函数实现 }
  2. 类函数未正确命名:请确保你在类的声明和定义中使用相同的函数名,并且函数的参数列表和返回类型也要一致。
  3. 类函数未正确调用:请确保你在main函数中正确调用了该类函数。如果该类函数是一个成员函数,则需要通过类的对象来调用,例如:MyClass obj; obj.myFunction();。如果该类函数是一个静态函数,则可以直接通过类名来调用,例如:MyClass::myFunction();
  4. 类函数未正确包含:请确保你在main函数中正确包含了定义该类的头文件。如果你的类定义在一个单独的头文件中,需要在main函数中使用#include指令包含该头文件。
  5. 类函数未正确链接:如果你的类函数定义在一个单独的源文件中,需要确保将该源文件与main函数所在的源文件进行链接。可以通过将两个源文件一起编译并链接,或者将类函数的实现放在头文件中进行解决。

总结起来,当类函数在main函数中出现“未定义的”错误时,需要检查类函数的定义、命名、调用、包含和链接等方面是否正确。如果以上步骤都正确无误,那么可能是其他代码逻辑或编译环境的问题,需要进一步排查。

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

相关·内容

这样 React 实践 TDD 编程

Redux编写测试听起来肯定有悖直觉。如果你使用了Redux,它可能看起来更加复杂。 然而,添加功能之前编写测试有助于编写更好代码,因为你预先考虑了将使用设计模式、体系结构和变量名称。...slice默认状态应该是一个空数组,毕竟,我们处理用户。 让我们通过编写一个测试: src/store创建一个名为slices新目录。...在这个目录,添加一个名为user.test.js文件。这个文件将包含我们将为userSlice编写测试。 第一个测试确保存储未定义。...thunk一个函数,它以storedispatch方法作为参数,然后API或副作用完成后使用它来dispatch同步操作。 首先,让我们为这个特性编写测试。...我们: 进行更新之前,保存以前状态并将users属性修改为预期状态。

1.9K30

为什么StringJava不可变

String Java 不可变。 不可变只是一个无法修改其实例。 创建实例时,将初始化实例所有信息,并且无法修改信息。 不可变有许多优点。...本文总结了为什么 String 设计为不可变。 这篇文章从内存,同步和数据结构角度说明了不变性概念。 1. 字符串池 字符串池(String intern pool)方法区域中特殊存储区域。...创建字符串并且池中已存在该字符串时,将返回现有字符串引用,而不是创建新对象。 以下代码将在堆仅创建一个字符串对象。...如果字符串可变,则使用一个引用更改字符串将导致其他引用错误。 2. 缓存哈希码 字符串哈希码经常在 Java 中使用。 例如, HashMap 或 HashSet 。...String,它具有如下代码: private int hash;//this is used to cache hash code. 3.

1.3K20
  • 没有DOM操作日子里,怎么熬过来

    假如你果真碰到这个类似的问题,可以考虑先将项目中node_modules删除掉,然后重新cnpm install安装项目所需依赖。通常这个情况,就会迎刃而解(不要问为什么,这可能个偏方)。...说到组件,项目中,你可能会看到公司前辈写组件代码,都是以 .vue 为后缀文件,打开后你会发现它整体结构分三层,分别定义了三个 tag标签,template,script,style。...然后对应代码自己标签里面各司其职,所有需要html、css、javascript都在里面。...接下来想谈谈vue生命周期和钩子函数。 每个 Vue 实例在被创建之前都要经过一系列初始化过程。例如需要设置数据监听、编译模板、挂载实例到 DOM、在数据变化时更新 DOM 等。...开发时候,写好data 剩下事情就是 通过异步请求来交互data,UI层绑定事件改变data,组件间传递data。 后记 在这个MVVM横行时代,已经渐渐忘却了jQuery存在。

    1.6K110

    nextline函数_JAVAScannernext()和nextLine()为什么不能一起使用?

    大家好,又见面了,你们朋友全栈君。...对于 “” 情况分析: 输入 2 时候调用 nextInt返回:nextInt 返回结束符之前内容,并不会返回结束符 我们输入:2 \r 以回车 ( \r ) 结尾,于是 2 被返回,...回车符 “\r” 它被丢弃缓冲区,现在缓冲区,只有一个 \r ,于是 下一次 nextLine 扫描时候就又扫描到了 \r,返回它之前内容,也是啥都没有 “” ,然后再把 \r 去掉, 对于...这个扫描器扫描过程判断停止依据就是“结束符”,空格,回车,tab 都算做结束符 而坑点在于 next 系列,也就是下面这些函数:next nextInt nextDouble nextFloat...这些函数与 nextLine 连用都会有坑 坑点就是 next 系列函数返回了数据后,会把回车符留在缓冲区,因此我们下一次使用 nextLine 时候会碰到读取空字符串情况 解决方案:输入都用

    2.7K10

    为什么深度学习,AlphaGo Zero一个巨大飞跃?

    Mathew Broderick扮演角色电影问道:“有没有什么办法可以让它自己玩?” ?...AlphaGo ZeroDeepMind自动操作系统最新化身。有人可能会认为,围棋击败人类世界冠军很难。...然而,在这里,每一个训练集都是全新,而且越来越具有挑战性。它也类似于课程学习,然而课程算法中固有的。训练集自生成,目标函数计算是由蒙特卡罗树搜索(MCTS)结果推导而来。...像围棋这样深度学习,你不能在纸上取得胜利,你必须要实际操作才能知道谁赢了。简而言之,无论一个简单想法是什么,你都不会体会到它到底有多好,除非你去实际运行它。...发现,使用较少训练数据同时,开发利用搜索机制能够创造性地发现新策略。这是很奇怪,就好像是自我对弈回馈自己,并让自己更好地学习。

    92980

    你知道Javafinal和static修饰变量什么时候赋值

    那就意味着只有static修饰变量才会在class文件对应字段表加上ConstantValue属性? 答案是否定。...首先,这个问题本身就问不太准确。 理解这位朋友真正想问为什么private final a = 10也可以通过ConstantValue属性形式赋值?” 觉得这是一个很好问题。...最后他发现和书中冲突,于是提出了上文这个问题。 这位朋友思路有问题觉得没有问题。 不过这样理解?显然不对。 因为虚拟机规范这样规范。...对于非静态字段,ConstantValue属性不会生效。 至于为什么要这样设计,功力不够暂时无法理解设计者想法。 那单独用final修饰实例变量到底什么时候赋值呢?...网上博客不都是加载准备阶段会对普通类属性赋初始值,对带有ConstantValue类属性直接赋值? 《深入理解Java虚拟机》也是这样说啊? 书上

    1.7K20

    你知道iOS开发工作为什么有人4k有人40k

    多写就没什么好说了,没有写过几十万行代码不能算熟悉一门语言。...多思考和讨论这个需要个人主动一些,遇到问题喜欢多问为什么多次重构和思考过程,我们就会慢慢积累出一问题 “最佳实践” 方式,成为自己宝贵经验。   ...在我看来,任何一件事情,如果你做到了热爱它,把它当作乐趣,那么同行做到出类拔萃应该是理所当然。如果不热爱,感觉做到会比较难。   ...多写就没什么好说了,没有写过几十万行代码不能算熟悉一门语言。...多思考和讨论这个需要个人主动一些,遇到问题喜欢多问为什么多次重构和思考过程,我们就会慢慢积累出一问题 “最佳实践” 方式,成为自己宝贵经验。

    2.8K90

    创建子类对象时,父构造函数调用被子类重写方法为什么调用子类方法?

    } } 问题:为什么创建A对象时候父会调用子类方法?...但是:创建B对象父会调用父方法? 答案: 当子类被加载到内存方法区后,会继续加载父到内存。...如果,子类重写了父方法,子类方法引用会指向子类方法,否则子类方法引用会指向父方法引用。 如果子类重载了父方法,则子类重载方法引用还指向子类方法。...但是:由于java语言静态多分派,动态单分派。其结果当编译时候,父构造方法调用方法参数已经强制转换为符合父方法参数了。 上边代码在编译前已经转换为下面这个样子了。...} } 看一下上边代码,是不是恍然大悟?

    6.2K10

    为什么Java成员变量不能被重写?成员变量Java能够被重写么?不会重写成员变量,而是隐藏成员变量访问隐藏域方法

    这篇文章讨论了Java面向对象概念中一个基本概念--Field Hiding(成员变量隐藏) 成员变量Java能够被重写么?...Paste_Image.png 按照我们已有的多态概念,第二个应该是输出sub才对,但却输出了super。这是为什么呢?...意思就是: 一个,子类成员变量如果和父成员变量同名,那么即使他们类型不一样,只要名字一样。父成员变量都会被隐藏。子类,父成员变量不能被简单用引用来访问。...而是,必须从父引用获得父被隐藏成员变量,一般来说,我们不推荐隐藏成员变量,因为这样会使代码变得难以阅读。...访问隐藏域方法 就是使用父引用类型,那么就可以访问到隐藏域,就像我们例子代码 就是使用类型转换System.out.println(((Super)c1).s); 翻译自http://www.programcreek.com

    3.5K40

    头文件必须?跟一跟编译过程~~~

    而且这也是头文件存在必要之处,即,但凡想在当前源文件中使用其他源文件函数、变量,甚至其他库、系统函数只需要#include相关头文件即可。...这相当于: main.cpp首先添加了func()函数声明,然后main()函数调用了func()。 func.cpp也添加了func()函数声明,同时给出了func()函数定义。...而且上面的测试main.cpp删掉了func()声明,就等于main.cpp删掉#include。所以可以认为“没有预处理过程”(实际上有的,因为预处理过程还负责生成行号等等职责)。...显然,main.o引用但未定义func()被链接器func.o中找到了。...本文只是就着这个问题,跟了下编译过程,看看平常开发过程遇到编译报错“未定义引用”、“未声明变量”这些错误来源哪原因是什么

    2K10

    论类型转换导致 JVM 加载提前报错问题

    作者文章描述了一个包含Father和Son情景,并展示了一段代码,验证了删除Son后仍会导致报错情况。...题目这样 Java 中有 Father 和 Son ,其中 Son 继承了 Father ,两均有 method 方法,现在 Main main 方法有如下调用: Father f...然后朋友发来一张图让沉默了: 竟然真的会报错,难道 JVM 虚拟机会提前解析并未执行代码包含引用?不对啊,这和我以前实践完全不一样,怎么会这样.........(即使 JVM specs 这种行为未定义,虚拟机实现可以选择立刻解析或是延迟解析) 那么问题出在哪里了呢?经过一番查证,发现这个报错其实是 JVM 加载验证阶段产生。...在对 Main.class 加载过程,对于 Father f = new Son(); 和 f.method();,产生了一个包含向上类型转换多态函数调用,对于这种调用,JVM 虚拟机会试图进行校验

    8910

    阿里社招面经 (已拿 offer)

    事件循环说一下(面试题:说说事件循环机制(满分答案来了)) JS有几种基本类型,分别是什么,与对象区别 JS 执行过程如何保存上下文(建议看看极客时间《浏览器工作原理》) 你认为什么前端 为什么想来阿里...最近在看什么书 微前端了解 你想成为什么样的人(个人成长规划) 项目中遇到最大挑战是什么,如何解决 node 大量日志怎么处理(缓冲队列/采样率降低等) http2 特点(「知识拾」 ...(网页录屏(帧记录)调研总结) 链路录屏法务问题如何解决 FMP 定义及统计,w3c草案你知道 react 项目的可持续维护性如何体现 react hooks用过为什么要用 h5 和小程序有什么区别...https加密原理,中间人攻击知道(「知识拾」你应该知道 https) ng 负载均衡方式有哪些 CDN 有什么作用 不可变数据里面,immutable,删除数组里面的列表(https...://juejin.im/post/5b9b30a35188255c6418e67c, https://juejin.im/post/5e6a14b1f265da572978a1d3) 垃圾回收,内部函数返给上层对象是如何管理

    1.9K20

    如何让matlab心甘情愿地做你文件搬运工

    真的这样?“小编,想用matlab批量创建文件夹!”、“小编,想用matlab把那张照片移到我指定文件夹”、“小编,那个文件看着不顺眼,用matlab怎么删除呀?”,.........dir 列出文件夹内容:让你对文件夹内容一目了然 ls 列出文件夹内容:楼上老哥,稳呀! pwd 确定当前文件夹:只注重当下! isfile 确定输入是否为文件:文件小花。...isfolder 确定输入是否为文件夹:文件夹小草。 exist 检查变量、脚本、函数、文件夹或存在情况:存在即合理! what 列出文件夹 MATLAB 文件:what?...which 定位函数和文件:就是matlabGPS。 cd 更改当前文件夹:改变,从当前开始! type 显示文件内容:能看透你心!信!...fileattrib 设置或者获取文件或文件夹属性:属性神马? open 合适应用程序打开文件:芝麻开门!

    97220

    C++程序编译之谜(一)——多文件编译奇怪现象

    1、奇怪现象 C++多文件编译时候,很多人都会经常碰见这样一种情况,一个cpp文件调用另一个cpp文件函数,那么可以直接调用?我们来做个试验。...main.cpp文件中直接调用cal.cpp函数方法可以?...千万不要觉得说肯定是他们漏复制了什么漏了函数声明什么,这些都不是原因。那么是什么原因呢? 2、真正原因 真正原因IDE搞鬼!...那么我们再回到开头那个问题,为什么有些人可以正确输出不会报错,而有些人却会报错呢?...首先猜测他们都是window平台执行,并且用IDE来编译,而不同IDE功能都各不相同,有些IDE非常智能,它可能会根据main文件中导入h文件自动去寻找对应cpp文件,比如像上面

    20110

    为什么C语言会有头文件

    前段时间一个刚转到C语言同事问我,为什么C会多一个头文件,而不是像Java和Python那样所有的代码都在源文件。...add(1, 2); return 0; } 在这个例子我们add.cpp文件先定义一个add函数,然后main文件先包含这个源代码文件,然后main函数中直接调用add函数,项目的目录结构如下...然后main文件定义这个宏,表示main不包含它实现,但是不管怎么样都需要在add.cpp中加上add函数定义,否则在调用add函数时会报add函数未定义变量或者函数 上述写法窘境 上面只引入一个文件...其实针对所有的变量、函数可以都在统一头文件声明,但是这么做又带来一个问题,如果要看它实现怎么办,那么多个文件不可能一个个找吧。...这样就解释了为什么声明时指定变量类型,如果编译器不知道类型就不知道该用什么指令来替换C代码。同时会将对应变量名作为符号保留。

    2.2K50

    Python异常

    当程序遇到无法处理错误时,就会抛出异常,并在控制台输出相关错误信息,包括异常类型、错误描述以及错误发生位置。二、捕获异常为什么要捕获异常呢?...(e)输出结果:出现变量未定义或者除以0异常name 'name' is not defined仔细观察这个输出结果,为什么会输出name 'name' is not defined但是不会输出division...这是因为Python捕获多个异常时,try 块代码自上而下执行,一旦遇到异常,程序会立刻跳转到相应 except 块,后续代码将不再执行。...def main(): func2()main()运行结果:利用异常具有传递性特点,main函数设置异常捕获便可保证程序不会因为异常崩溃。...因为整个程序无论在哪里发生异常,异常最终都会传递到main函数,进而确保所有的异常都会被捕获。

    4911

    详解:33案例(qq新闻)

    那里什么代码呀, 好,这位同学你问到核心点了,很好 counter-reset: count; counter-increment: count 1; content:counter(count...); 这三句代码修饰呀, 同学们,你们知道怎么使文字垂直水平居中?...知道知道,用两句代码搞定, height: 20px; line-height: 20px; text-align: center;三步搞定 那同学们,你们知道怎么玩margin?...知道知道,那好,陈业贵同学你来回答一下 margin:40px;同学们知道是什么意思?代表上下左右都40px距离, 老师那怎么证明呢?...好同学们,来为你们证明一下 算了·,大家还是看我margin加深理解文章把,那里面有哈哈哈哈 text-indent: 15px;什么意思?

    29420

    super(props) 真的那么重要吗?

    不过还是让我们回到上面这个例子,这次只使用ES2015特性: ? 为什么我们要调用super? 可以调用它? 如果必须要调用,不传递prop参数会发生什么? 还有其他参数?...接下来我们试一试: ---- JavaScript ,super 指的是父构造函数。(我们示例,它指向React.Component实现。)...重要调用父构造函数之前,你不能在构造函数中使用this。 JavaScript 不会让你这样做: ?...当然,React 稍后会在你构造函数运行后分配 this.props, 但是调用 super() 之后和构造函数结束前这段区间内 this.props 仍然未定义: ?...如果这种情况发生在从构造函数调用某个方法,可能会给调试工作带来很大麻烦。 这就是为什么建议总是调用 super(props) ,即使没有必要情况之下: ?

    1.3K50

    C语言不是最好,却是最爱~

    1、为什么说C不是最好语言? 首先,这个世上没有最好编程语言。每种语言都有独特优势以及适用情况,所以尽管你可以 Excel 编写光线追踪程序,但最好还是使用其他语言。...但是,C++ 24 能够 C++ 21 基础之上,发展成为一门独立编程语言?大多数过时功能都可以抛弃对此表示怀疑。...当然指的是“未定义行为”以及编译器处理方式。这已成为一大毒瘤(只要你代码依赖于二进制补码算术,就会被认定具有未定义行为,编译器会抛弃整块代码)。...如果知道 x86 会忽略移位偏移量高比特, ARM 上负左移相当于右移,那么为什么不能专门针对该体系结构编写程序呢?毕竟,连整数大小不同平台上都不一样。...常用例子就是函数调用:根据调用习惯约定和编译器实现,函数参数求值顺序可能完全是随机,因此 foo(*ptr++, *ptr++, *ptr++)结果未定义,因此即使你知道目标体系结构

    14710
    领券