2012-06-20 106 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