私は2つのヘッダーを持っています。
// header1.h
class A
{
public:
void f();
};
// header2.h
#include "header1.h"
inline void A::f()
{
std::cout << "Yahoo.";
}
// test1.cpp
#include "header1.h"
int main() { A a; a.f(); return 0; }
// test2.cpp
#include "header2.h"
void ff() { /* do nothing */ }
MSVC 2013 でリンク エラーが発生しました。翻訳単位が 1 つしかないので、「ODR」が原因ではないのでしょうか?
これで、header2.h をインクルードする test2.cpp ができました。したがって、リンカは現在 header2.h を見つけることができると思います。それでもリンク エラーが発生するのはなぜですか?