无法访问另一个标头中包含的标头?

时间:2012-06-20 17:01:18

标签: c++ header

我有三个.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?为什么不起作用?

2 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:2)

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