首页
学习
活动
专区
工具
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.6K10

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

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

89880

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

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

1.6K20

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

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

2.7K90

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

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

6.1K10

为什么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中找到了。...本文只是就着这个问题,跟了下编译过程,看看平常开发过程遇到编译报错“未定义引用”、“未声明变量”这些错误来源哪原因是什么

1.7K10

阿里社招面经 (已拿 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.8K20

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

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

95120

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

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

14810

为什么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.1K50

详解: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;什么意思?

27620

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

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

1.3K50

为什么十分喜欢C,却很不喜欢C++?

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

70310

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

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

11110

入门 | 一小时向非程序员介绍 R 编程语言

接着,让妹妹一个R脚本文件中保存了上面那两行代码(认为,初学者开始使用一门语言时就教会他们如何正确地把代码保存在脚本文件是非常重要)。...然后,教她怎么用Cmd-Enter组合键(译者注:这是Mac OS键位。PC,对应组合键Ctrl+Enter)控制台中执行代码。...教我妹妹理解这段代码涉及解释什么函数(因为rnorm和hist都是函数)、什么函数实参,以及为什么你可以通过名字引用实参却不一定非得这样做。...R该怎么做X这件事”初学者最常见问题之一,认为这个问题答案可能应该是”使用函数Y( )”——所以重要能够搞清楚如何使用函数Y( )。...这部分内容相当有趣,以至于我妹妹开始主导学习过程了:不再说“要教你如何做什么”,而是她主动问“嗯,我们能画一个散点图?”或“你觉得我们可以把最优拟合直线放到那个图上?”

1.1K60
领券