无法在lambda中调用父纯虚函数

时间:2018-05-11 23:34:06

标签: c++ lambda std-function pure-virtual

我无法在继承类的lambda中调用基类的纯虚函数。我将问题简化为以下简单示例...

用例是,类Test应该再次成为其他类的基类,它将实现纯虚函数(程序中的任何位置)。

class Base
{
    public:

        virtual void DoSomething(Parameter* p) = 0;

};

class Test : public Base 
{
    public:

        void addFunction() 
        {
            mFunction = [this] (Parameter* p) { Base::DoSomething(p); };
        }

    private:

    std::function<void(Parameter* p)> mFunction;
};

我收到以下编译错误:

undefined reference to Base::DoSomething(Parameter* p)

我目前的解决方案是在基类中调用tempFunction,然后调用虚函数。但这似乎更像是一个黑客......并且意味着不必要的开销:

class Base
{
    public:

        virtual void DoSomething(Parameter* p) = 0;

    protected:

        void tempDoSomething(Parameter* p) { DoSomething(p); }  // call this function instead

};

我正在使用Android-NDK和clang编译器。

0 个答案:

没有答案