小编Tar*_*don的帖子

将抽象类的方法作为std :: function传递

我有一些像这样的代码(这只是一个片段,不是完全有效的代码):

class AbstractClass {
public:
    AbstractClass() {}
    virtual ~AbstractClass() {}
    virtual void doA() { std::cout << "doA1\n"; };
    virtual void doB() = 0;
};

class ImplClass : public AbstractClass {
public:
    ImplClass() {}
    virtual ~ImplClass() {}
    virtual void doA() override { std::cout << "doA2\n"; };
    virtual void doB() override { std::cout << "doB2\n"; };
};
Run Code Online (Sandbox Code Playgroud)

现在我想在std :: function中存储对AbstractClass的成员方法的调用,如下所示:

int main() {
    AbstractClass* aClass = new ImplClass();
    std::function<void()> func = std::bind(&AbstractClass::doA, *aClass)

    delete aClass;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

然而,根据编译器,由于AbstractClass中存在纯虚方法,这不起作用.

编辑:供参考完整错误

In …
Run Code Online (Sandbox Code Playgroud)

c++ lambda std

2
推荐指数
1
解决办法
889
查看次数

标签 统计

c++ ×1

lambda ×1

std ×1