我试图在我的项目中设置依赖注入(https://boost-ext.github.io/di/),并得到以下编译错误:“没有找到匹配的重载函数”和“无效的显式模板参数”。
我的测试设置如下
#include "di.hpp"
namespace di = boost::di;
class IA{
public:
virtual void doSomething() = 0;
};
class IB{
public:
virtual void doSomething() = 0;
};
class IC{
public:
virtual void doSomething() = 0;
};
class A : public IA {
public:
void doSomething() override {
}
};
class B : public IB {
public:
void doSomething() override {
}
};
class C : public IC{
std::shared_ptr<A> a_;
std::shared_ptr<B> b_;
public:
C(std::shared_ptr<A> a, std::shared_ptr<B> b) : a_(a), b_(b){}
void doSomething() override {
}
};
int main(int argc, char *argv[]) {
const auto injector = di::make_injector(
di::bind<IA>.to<A>(),
di::bind<IB>.to<B>(),
di::bind<IC>.to<C>()
);
auto test = injector.create<IC>();
}以下是我的详细编译错误:
错误信息:'boost::ext::di::v1_2_0::core::injector,boost::ext::di::v1_2_0::core::dependency,boost::ext::di::v1_2_0::core::dependency,boost::ext::di::v1_2_0::core::dependency::create‘:没有找到与TConfig=boost::ext::di::v1_2_0::config、TScope=boost::ext::di::v1_2_0::scopes::deduce,TExpected=IA、T=A、TName=boost::ext::di::v1_2_0::no_name、TPriority=void匹配的重载函数“T boost::ext::di::v1_2_0::core::injector,boost::ext::di::v1_2_0::core::dependency”的无效显式模板参数boost::ext::di::v1_2_0::core::dependency,boost::ext::di::v1_2_0::core::dependency>::create(void) const‘with TConfig=boost::ext::di::v1_2_0::config,TScope=boost::ext::di::v1_2_0::scopes::deduce,TExpected=IA,T=A注意:参见'boost::ext::di::v1_2_0::core::injector,boost::ext::di::v1_2_0::core::dependency,boost::ext::di::v1_2_0::core::dependency>::create‘与TConfig=boost::ext::di::v1_2_0::config,TScope=boost::ext::di::v1_2_0::scopes::deduce,TExpected=IA,T=A,TName=boost::ext::di::v1_2_0::no_name,TPriority=void,TCtor=boost::ext::di::v1_2_0::core::none
你知道我做错了什么吗?
发布于 2021-05-21 12:51:13
https://stackoverflow.com/questions/67636890
复制相似问题