无法解析外部符号,表面意思还是比较清楚的。
但当出了问题的时候呢,就不太好解决了。
最常出现问题的原因:
1.没有包含头文件
2.没有包含库文件
3.静态成员变量没有在类外定义
这里,我主要想说的是类中静态成员变量的问题。
为啥我们没有在类外定义静态成员变量就会报这种错误呢。
分析一下编译器对静态成员变量的处理流程,相信大家就会明白了。
1.大家应该都知道静态变量是在编译期就分配空间的。当编译器编译程序的时候,不会查看类中的静态成员变量,或者说是碰到了也不会有反应,只会对类外发现的静态变量进行内存分配。为什么要这样呢?不清楚,大家可以考虑考虑,相信编译器这样做一定有他的理由。
2.如果没在类外定义,编译器就不会在分配空间。所以呢,当程序运行的时候,类中的声明的这个静态变量实际没有分配空间,所以一定找不到,就会报错,错误类型无法解析外部符号。