我无法在继承类的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编译器。