我在两个单独的 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() {}
}
我使用创建一和二的静态库
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
即使我更改一和二的顺序,代码也会编译。
我期待代码不应该编译,除非我重复一和二的顺序,因为存在循环依赖。
可能是什么原因?
我正在使用 g++ 版本 4.8.2 运行 ubuntu 14.04