在两个不同文件(A.cpp,Ah,B.cpp,Bh)中,我有两个相同类的版本,所有文件中类的名称相同但内部实现不同。在不同文件中具有相同名称的不同类版本
我的想法是通过更改#include中的.h文件的名称从一个版本切换到另一个版本,所以我不应该更改代码中的其他任何东西(两个版本的方法都有相同的签名和相同的属性)
Ah和Bh从不包括在同一时间。
问题是无论什么包括我总是使用的文件执行一个版本。我知道,当我包含B.h时,至少它是编译的(通过在编译时显示一些代码错误)
可以这样做吗?或者这是违反C++的一些规则?我认为这不应该违反One Definition Rule,因为我不同时使用A.h和B.h。
问题是你如何链接目标文件?只是调整包括不起作用。 – pmr
如果你包含B.h并且链接到B.o,你应该没问题。你如何链接?但是如果这个班级的api是一致的,那么A.h和B.h应该是相同的;他们为什么不同? –
你包含的头文件不会像你链接的实际代码那么重要。 – Joe