2012-06-20 77 views
0

我有三个.cpp文件及其标题。无法访问包含在另一个头文件中的头文件?

//a.cpp 
#include "a.h" 
#include "b.h" 
void A::foo() { 
    C c; 
    c.bar(); 
} 


    //a.h 
#include "b.h" 
class A { 
public: 
    void foo(); 
}; 


    //b.h 
#include "c.h" 

    //c.h 
#pragma once  
class C { 
public: 
    void bar(); 
}; 


    //c.cpp 
#include "c.h" 
void C::bar() {} 

    //other files are ignored 

但是当我编译他们,我得到这个错误:

a.cpp:(.text+0xb1): undefined reference to `C::bar()` 

有我包括c.h通过b.h?为什么它不起作用?

+0

是c.cpp得到编译? –

+0

你是如何编译它的? – SuperSaiyan

+0

对不起,我忘了清理一些旧的目标文件。我应该首先运行'make clean'......这确实是一个不合格的问题。 –

回答

7

未定义的引用是链接器错误,您的代码正在编译。确保你链接a.obj,b.objc.obj

2

这是一个链接错误,表示链接到构建程序的一组翻译单元中缺少C::bar()的定义。最有可能的原因是你在构建中不包括c.cpp