我自己定义了一个头文件,里面定义了几个用的较多的函数,在Class A和Class B里要调用,A调用这个头文件没问题,为什么在B调用的时候就会有错误,错误指向A.obj,说头文件里的函数already defined in BMPATL.obj,why?请教各位了~

解决方案 »

  1.   

    那么,你是在A和B中都#include 了这个头文件吗?而且B中#include 了A的头文件?既然你的头文件里只是定义了函数,那就没有必要在A和B的头文件中包含了,在cpp文件中包含就足够了。
      

  2.   

    解决这个问题和以后可能出现的类似问题,建议楼主在每一个头文件里都使用#ifdef的预处理指令(请参见VC的Class Winzard生成的各个头文件,注意要使用全局唯一的宏名),这样能保证多次引用这个头文件时编译器只编译一次,并且你就不用花心思去看是否有多次包含同一个头文件了。
      

  3.   

    看到happyparrot的回答想问一个问题,在cpp中包含头文件和在头文件中包含头文件具体的区别是什么,对编译的速度和其他方面有什么大的影响?洗耳恭听!
      

  4.   

    你只能把函数的声明放在头文件里, 函数的定义要放在*.cpp里,比如
    myfunc.hvoid foo();
    myfunc.cpp;void foo()
    {
     ...
    }
    然后把myfunc.cpp放到工程里, 在A和B中都包含myfunc.h
      

  5.   

    重新写一个类,把原先你定义在头文件的函数写到新类中,然后class A 和 class B 中都包含这个新类的头文件,然后A ,B 调用函数都没有问题了