我有一个 C++ 类 header ,它定义了许多内联函数。我想将这些函数移出 header 并放入单独的 .cpp
文件中以加快编译速度。虽然我可以将普通函数移动到一个单独的文件中,并且只在标题中保留函数减速,但是当我尝试将虚拟函数移动到 .cpp
中时,我收到以下错误:
Error 2 - error C2723: 'virtual' storage-class specifier illegal on function definition
我该怎么做?函数如下:
virtual void SoundMixerSub::SetFilters(const MixerFilter& f)
{
....
}
最佳答案
正如它所说,根据 §7.1.2,您不能在类外的函数定义上使用 virtual
:
The
virtual
specifier shall be used only in the initial declaration of a non-static class member function
保留声明中的 virtual
并将其从定义中移除。所以在头文件中:
class SoundMixerSub : ...
{
// ...
virtual void SetFilters(const MixerFilter&);
// ...
};
然后在实现文件中:
void SoundMixerSub::SetFilters(const MixerFilter& f)
{
// ...
}
关于c++ - 无法将虚函数移到 header 之外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15599887/