Я знаю, что встроенные функции-члены по определению должны войти в заголовок. Но что, если невозможно включить реализацию функции в заголовок? Возьмем эту ситуацию:
Файл A.h
#pragma once
#include "B.h"
class A{
B b;
};
Файл B.h
#pragma once
class A; //forward declaration
class B{
inline A getA();
};
Из-за кругового включения я должен поставить реализацию getA
в
B.cpp
#include "B.h"
#include "A.h"
inline A B::getA(){
return A();
}
Будет ли компилятор inline getA
? Если это так, какое ключевое слово inline является значительным (в заголовке или в файле .cpp)? Есть ли другой способ поместить определение встроенной функции-члена в его .cpp файл?