首页
学习
活动
专区
工具
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)结果推导而来。...像围棋这样深度学习,你不能在纸上取得胜利,你必须要实际操作才能知道谁赢了。简而言之,无论一个简单想法是什么,你都不会体会到它到底有多好,除非你去实际运行它。...发现,使用较少训练数据同时,开发利用搜索机制能够创造性地发现新策略。这是很奇怪,就好像是自我对弈回馈自己,并让自己更好地学习。

    93880

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

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

    1.8K20

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

    2.1K10

    阿里社招面经 (已拿 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 合适应用程序打开文件:芝麻开门!

    97620

    论类型转换导致 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 虚拟机会试图进行校验

    9010

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

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

    21810

    为什么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函数,进而确保所有的异常都会被捕获。

    5011

    深度刨析C语言中动态内存管理

    1.为什么会存在动态内存分配 截至目前,我们已经掌握了两种内存开辟方式了: 单个变量创建 数组创建 int a = 10;//栈空间开辟4个字节 int arr[10] = {0};//栈空间开辟了...返回值类型void*,所以malloc函数并不知道开辟空间类型,具体使用时候,使用者自己来决定 如果参数size为0,malloc行为标准未定义,这取决于编译器,所以不要传0作为参数...test函数我们创建了一个str指针指向NULL,然后就直接把指针变量传入getmemory函数,这里传参传值调用,对p修改不会影响到str也就造成了,strcpy函数对NULL指针解引用错误...4.代码段:存放函数体(成员函数和全局函数二进制代码 有了这幅图,我们就能更好理解《C语言篇章》中讲static关键字修饰局部变量例子了。...1和代码2都是可以完成相同功能,都是代码1实现有两个好处: 好处1:方便内存释放 如果我们代码别人用函数,你在里面做了二次内存分配,并把整个结构体返回给用户。

    6110

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

    29620

    打开C语言常用内存函数大门(二)—— memmove()函数 (内含memmove讲解和模拟实现)

    2.1 memmove()函数与memcpy()函数差异 我们用memcpy函数时,不知道大家有没有想过这么一个问题: int main() { int arr1[10] = { 1,2,3,4,5,6,7,8,9,10...[i]); } return 0; } VS上面你可能会成功运行这段代码,但这并不意味着这段代码不存在问题。...你若是换一个别的编译器,可能上面的代码就跑不起来了。为什么会这样呢? 事实上,这种行为memcpy函数看来属于未定义行为(想要操作同一个对象里俩成员之间出现了内存交织情况)。...因此,这也就是为什么memcpy函数处理不了内存空间有交织数据本质原因。 相信看完上述解释后,你已经对memmove什么情况下使用已经有大概印象了。...3. memmove()函数模拟实现 又到本文最精彩时候了,函数模拟实现。 以下编程思路: 下面实现代码(可以对着思路理解代码): 4.

    11010
    领券