我有两个类One和Two存在于两个单独的cpp文件中。内容如下
#include "One.h"
#include "Two.h"
namespace Sample
{
One::One() {}
void One::foo1() {
Two t;
t.foo();
}
void One::foo() { }
}
和Two.cpp是
#include "Two.h"
#include "One.h"
namespace Sample {
Two::Two() { }
void Two::foo1() {
One t;
t.foo();
}
void Two::foo() {}
}
我使用
创建了One和Two的静态库g++ -c One.cpp; ar cr libOne.a One.o; ranlib libOne.a
g++ -c Two.cpp; ar cr libTwo.a One.o; ranlib libTwo.a
对于main,我调用两个类的相应foo1
函数并编译main如下
g++ main.cpp -o main -L. -lOne -lTwo
即使我改变了One和Two的顺序,代码也会编译。
我期待代码不应该编译,除非我重复一和二的顺序,因为存在循环依赖。
可能是什么原因?
我正在使用g ++版本4.8.2运行ubuntu 14.04