关于inline函数的调用解决思路

关于inline函数的调用
情况1
//A.h
class   A
{
public:
        void   Foo(int   x,   int   y);  
}
//A.cpp
inline   void   A::Foo(int   x,   int   y)
{

}

//B.cpp
void   B::Fun()
{
      A   a;
      a.Foo(0,0);//这里编译不过去
}
//////////////////////////////////////////////////////////////
情况2
如下可以正确编译,也就是说把Foo函数的定义放到了A.h中
//A.h
class   A
{
public:
        void   Foo(int   x,   int   y);  
}

inline   void   A::Foo(int   x,   int   y)
{

}

//B.cpp
void   B::Fun()
{
      A   a;
      a.Foo(0,0);//这里编译不过去
}

如下是我的理解:当把某一函数声明为inline的话,在调用处必须可以找到函数的实现,这样感觉结构很不好,能否像一般函数那样,把inline函数也分成.h和.cpp文件呢?

如上,不知道说清楚了吗,哪里不请指出

------解决方案--------------------
inline 函数一般必须在头文件内,因为大多数构建环境在编译期间进行 inline 化。为了用被调用函数的函数本体替换一个函数调用,编译器必须知道函数看起来像什么样子
(有一些构建环境可以在连接期间进行 inline 化,还有少数几个——比如,基于 .NET Common Language Infrastructure (CLI) 的控制环境——居然能在运行时 inline 化。然而,这些环境都是例外,并非规则。inline 化在大多数 C++ 程序中是一个编译时行为。)

http://dev.yesky.com/260/2095260.shtml
------解决方案--------------------
不准确,应该是: 只要不是在一个模块里调用就需要把定义放在头文件里面
这主要是针对一个类的实现体可能分散在不同cpp的情况
------解决方案--------------------
这是c++标准,不过没有理由说不能其它方式做,只要编译器支持。