我有一个C ++类头,它定义了许多内联函数。我想将这些函数移到标题之外,并进入一个单独的.cpp
文件,以便进行编译。虽然我可以将普通函数移动到单独的文件中,并且只在标题中保留函数减速,但当我尝试将虚函数移动到.cpp
时,我得到以下错误:
错误2 - 错误C2723:'虚拟'存储类说明符在函数定义上非法
我该怎么做?功能如下:
virtual void SoundMixerSub::SetFilters(const MixerFilter& f)
{
....
}
答案 0 :(得分:10)
正如它所说,根据§7.1.2,你不能在类之外的函数定义上virtual
:
virtual
说明符只能用于非静态类成员函数的初始声明
在声明中保留virtual
并将其从定义中删除。所以在头文件中:
class SoundMixerSub : ...
{
// ...
virtual void SetFilters(const MixerFilter&);
// ...
};
然后在实现文件中:
void SoundMixerSub::SetFilters(const MixerFilter& f)
{
// ...
}