C++在main函数中创建自定义类对象报未声明标识符错误如何解决
错误原因
C++编译器按照从上到下的顺序逐行编译代码,在main函数中实例化MyClass对象时,编译器还没有扫描到后续的MyClass类定义,因此会抛出未声明标识符的报错,和拼写、命名空间问题无关,属于代码顺序不符合语法规则导致的问题。
解决方案
方案1(最推荐,适配单文件场景)
直接把类的定义移动到main函数之前即可,修改后代码如下:
class MyClass { public: void MyMethod() { //some code } }; int main() { MyClass sln; sln.MyMethod(); }
方案2(适配多文件拆分场景)
如果项目需要拆分声明和实现,或者有特殊需求要把类实现放在main之后,可以先做类的前向声明,但要注意:仅前向声明的类只能用于定义指针、引用,不能直接实例化对象,实例化操作必须放在类完整定义之后。
如果是多文件项目,通常把类声明写在.h头文件中,在包含main的源文件顶部引入对应头文件即可解决问题。
内容的提问来源于stack exchange,提问作者dark_cypher
相关产品推荐
相关产品推荐

