这个extern是声明而非定义,它表示first在别的某处,肯定是你在别的地方没有定义。你可以在和该头文件对应的cpp文件中定义这三个变量。直接在头文件定义(即去掉extern)是不好的做法,如果多个cpp一起编译,它们引用了不止一次这个头文件,会出现重复定义的错误。最佳的做法是,一处定义,多处声明。
把extern去掉