无法在标题外移动虚函数

时间:2013-03-24 14:51:04

标签: c++ function visual-c++ syntax compilation

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

  

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

我该怎么做?功能如下:

 virtual void SoundMixerSub::SetFilters(const MixerFilter& f)
 { 
....
 }

1 个答案:

答案 0 :(得分:10)

正如它所说,根据§7.1.2,你不能在类之外的函数定义上virtual

  

virtual说明符只能用于非静态类成员函数的初始声明

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

class SoundMixerSub : ...
{
  // ...
  virtual void SetFilters(const MixerFilter&);
  // ...
};

然后在实现文件中:

void SoundMixerSub::SetFilters(const MixerFilter& f)
{ 
  // ...
}