次のコードを検討してください。
header.h 内
#pragma once
class someClass
{
public:
void foo();
};
header.cpp 内
#include "header.h"
inline void someClass::foo(){}
main.cpp で
#include <iostream>
#include "header.h"
using namespace std;
int main()
{
someClass obj;
obj.foo();
}
ここで、foo 関数が header.cpp でインラインとして定義されているため、リンク エラーが発生します。'inline' キーワードを削除すると、コンパイルと実行はエラーなしで続行されます。
この「インライン」関数でリンク エラーが発生する理由を教えてください。