は、あなたが同じ内容を持つ2つの実装のソースファイルを持っていると仮定しましょう:正常な機能(ないメンバメソッド)を実装(静的グローバル関数のような)メンバ関数の隠された実装
// foo{a,b}.cpp
class Foo {
public:
void bar();
}
void Foo::bar() { std::cout << "bar\n"; }
、私は単純に、このマークを付けます方法はstatic
です。しかし、これはメソッド宣言では異なる意味を持ち、実装時には指定できません。
foob.cpp
を変更して、両方のファイルをコンパイルして一緒にリンクしているときにリンカーエラーが発生しないようにするにはどうすればよいですか?
オハイオ州...私は「名前空間にインクルードファイルを置く」と言いたかったのですが、次に[this](http://stackoverflow.com/a/9765654/1016716)を読みました。ああ、私は確かに良い答えがあると確信しています。 –
まあ、ここで実際に解決したい問題は完全にはわかりませんが、[pimpl idiom](https://en.wikipedia.org/wiki/Opaque_pointer#C.2B.2B)のようなにおいがします(Fooはすでに公表されていると思われます)。 –
同じ内容の2つの実装ソースファイルをコンパイルするのはなぜですか?重複した定義を避けるために使用したい_oneを条件付きでコンパイルしないのはなぜですか? –