【发布时间】:2021-11-09 05:37:12
【问题描述】:
我有一个抽象类如下:
class AbstractClass : public std::enable_shared_from_this<AbstractClass> {
public:
virtual ~AbstractClass() = default;
virtual bool Start() = 0;
virtual void Stop() = 0;
};
这是派生类:
class DerivedClass : public AbstractClass {
public:
bool Start() override;
void Stop() override;
}
我正在尝试在另一个文件中创建派生类的对象和派生类方法的线程:
// Create object
derivedClass_.reset(...);
//Start a thread for the derived class method
std::unique_ptr<boost::thread> derivedClassThread_;
derivedClassThread_.reset(new boost::thread(std::bind(&DerivedClass::Start,
derivedClass_)));
当我编译这个时,我得到了一些奇怪的错误:
错误:'class std::result_of
'
有人可以帮我吗?
【问题讨论】:
-
很难确定这是否会为您解决问题,但这肯定会更有意义:
derivedClassThread_ = std::make_shared<boost::thread>([derived_class_]{ derived_class_->Start(); }); -
嗨@Frank,感谢您的回复。这是我编译时得到的:错误:捕获非变量 'derived_class_'derivedClassThread_ = std::make_shared<:thread>([derived_class_]{ derived_class_->Start(); });错误:没有为这个 lambda 函数捕获“this” dderivedClassThread_ = std::make_shared<:thread>([derived_class_]{ derived_class_->Start(); });
标签: c++ boost abstract-class virtual-functions