c++ - 无法将虚函数移到 header 之外

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

我有一个 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/

相关文章:

c++ - 减少随机播放算法中调用rand的次数

c++ - 创建没有复制构造函数的std::vectors的std::vector

javascript - 如何通过 PHP 调用带参数的 onClick Javascript 函数

C++更改错误数组的值

c++ - glReadPixels() 真的很慢,从鼠标位置获取 OpenGL 坐标的更好解决方案?

scala - 重载的方法值在scala中应用替代错误

linux - 我可以从 ssh 调用本地函数吗?

visual-c++ - 如何将MFC窗体的控件从底部移动到顶部?

visual-c++ - Visual Studio MFC 在键入/动态时更改编辑控件中的文本

c++ - 在可执行文件之间传输数据