缺using namespace test1; using namespace test1::test2;导致的编译错误

      最近遇到一个编译问题, 耗费了点时间才找到原因, 现在记录一下, 下次很快就能搞定类似问题了。

      某基础功能库提供了test.h文件和libtest.a文件供外部调用, 在业务层比较成熟的A模块中, 需要用到test.h中的一个类Student,  在A模块中,包含了test.h, 然后指定了libtest.a,  编译、调用OK. 

     而我要搭建一个新的B模块, 也要用到test.h中的类Student, 于是包含test.h并在makefile中指定libtest.a,  然而, 在编译的时候, error提示Student没有定义.  这显然不是没有找到头文件test.h或者libtest.a库, 想了一下, 没有找到原因, 好吧, 那就去test.h看看。 一看, 傻眼了, 原来Student类被两层的namespace包含着, 裹得紧紧的, 夹得紧紧的。 看来, 需要加上名空间。

      回头再看看A模块, 果然已经有了using namespace test1; using namespace test1::test2;   于是, 在B模块中也加上这个, 然后就OK了。


      问题虽小, 仍需注意, 毕竟耗了好几分钟呢!



你可能感兴趣的:(S1:,C/C++,s2:,软件进阶,s2:,Linux杂项)