加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

beginner c:基类中的虚函数

发布时间:2020-12-16 10:55:23 所属栏目:百科 来源:网络整理
导读:我正在编写一些代码,我定义了以下基类. class Chorus{ public: //Destructor virtual ~Chorus(); //callback function virtual int callback( void *outputBuffer,void *notUsed,unsigned int nBufferFrames,double streamTime,RtAudioStreamStatus status,v
我正在编写一些代码,我定义了以下基类.

class Chorus{
  public:

    //Destructor
    virtual ~Chorus();

    //callback function
    virtual int callback( void *outputBuffer,void *notUsed,unsigned int 
       nBufferFrames,double streamTime,RtAudioStreamStatus status,void *userData );

    virtual void initializeDelayBuffer(void);

    virtual void destroyDelayBuffer(void);
};

我想将它用作基类,而不是实际上对它自己做任何事情.所以我有两个单独的类,它们来自这个类Chorus.我想这样做只是简单地提供一些基本约束,以确定任何派生的Chorus类必须被认为在我的程序中可用.

当我构建我的项目(Visual Studio 2008)时,我在此Chorus类的所有虚函数上得到了未解析的外部符号错误.我猜这是典型的错误,我没有做出这些函数的前向声明.但是,由于它们是虚拟的,我不希望它们实际被定义为在导出类中定义之前做任何事情,我该怎么做才能解决这个问题?

解决方法

如果你的意图是让它们只是实现子类的占位符,那么以= 0结尾使它们成为纯虚函数.例如

virtual void destroyDelayBuffer(void) = 0;

这使得该方法可以说是“抽象的”. C编译器不会查找方法的实际定义,而是强制所有派生类在创建实例之前实现这些方法.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读