いくつかのラッパーコードをヘッダーのみのライブラリにしたいのですが。私は、ブーストライブラリに触発されて、.libの配布と、.cppのコンパイルの必要性を単純化するためだけにヘッダーを保持しました。
この例では、「zh」がラッパーであり、a.cppがリファクタリングされて、B()が独自のソースファイルに移動されています。今では動作しません。
zh
class Z
{
public:
void Foo(); // edited to match my code
};
Z::Foo() { }
a.cpp
#include "z.h"
void A() {
Z z;
z.Foo();
}
//void B(Z z) {
// z.Foo();
//}
b.cpp
#include "z.h"
void B(Z z) {
z.Foo();
}
*エラーLNK2005: "public:__cdecl void z :: Foo()"はすでにb.objで定義されています*
zhを宣言用のzhと定義用のz.cppに分けることで、これを修正できることを私は知っています。
- しかし、Boostライブラリは.cppファイルなしでどうやって逃げることができますか?
- すべてがテンプレートである必要がありますか?
- どのコードがzhに入ることができますか?