I know that inline member functions by definition should go into the header. But what if it's not possible to put the implementation of the function into the header? Let's take this situation:
File A.h
#pragma once
#include "B.h"
class A{
B b;
};
File B.h
#pragma once
class A; //forward declaration
class B{
inline A getA();
};
Due to the circular include I have to put the implementation of getA
into
B.cpp
#include "B.h"
#include "A.h"
inline A B::getA(){
return A();
}
Will the compiler inline getA
? If so, which inline keyword is the significant one (the one in the header or the one in the .cpp file)? Is there another way to put the definition of an inline member function into its .cpp file?