无法在标题外移动虚函数

Rob*_*cks 1 c++ syntax compilation function visual-c++

我有一个C++类头,它定义了许多内联函数.我想将这些函数移到标题之外并进入一个单独的.cpp文件,以便进行编译.虽然我可以将普通函数移动到单独的文件中并且只保留标题中的函数减速度,但是当我尝试将虚函数移动到.cppI时会出现以下错误:

错误2 - 错误C2723:'virtual'存储类说明符在函数定义上非法

我怎么做?功能如下:

 virtual void SoundMixerSub::SetFilters(const MixerFilter& f)
 { 
....
 }
Run Code Online (Sandbox Code Playgroud)

Jos*_*eld 10

正如它所说的virtual那样,根据§7.1.2 ,你不能拥有类外的函数定义:

virtual说明符应仅在非静态类的成员函数的初始声明中使用

保留virtual声明并将其从定义中删除.所以在头文件中:

class SoundMixerSub : ...
{
  // ...
  virtual void SetFilters(const MixerFilter&);
  // ...
};
Run Code Online (Sandbox Code Playgroud)

然后在实现文件中:

void SoundMixerSub::SetFilters(const MixerFilter& f)
{ 
  // ...
}
Run Code Online (Sandbox Code Playgroud)