C++ 委托工厂函数调用-找不到正确的语法
我想将工厂函数指针和可变长度参数传递给函数,但找不到正确的语法。大概是这样的:C++ 委托工厂函数调用-找不到正确的语法,c++,function-pointers,factory,C++,Function Pointers,Factory,我想将工厂函数指针和可变长度参数传递给函数,但找不到正确的语法。大概是这样的: #include <memory> struct Ressource { int a; float b; static std::shared_ptr<Ressource> make(int _a, float _b) { return std::shared_ptr<Ressource>(new Ressource(_a, _b));
#include <memory>
struct Ressource {
int a;
float b;
static std::shared_ptr<Ressource> make(int _a, float _b) {
return std::shared_ptr<Ressource>(new Ressource(_a, _b));
}
private:
Ressource(int _a, float _b) : a{ _a }, b{ _b } {}
};
template<typename R, typename... Args>
void delegate_(std::shared_ptr<R>(R::*factory)(Args...), Args... args) {
std::shared_ptr<R> ressource = factory(args...);
}
void test() {
delegate_(&Ressource::make, 1, 3.0f);
}
#包括
结构资源{
INTA;
浮球b;
静态标准::共享ptr生成(整数a、浮点b){
返回std::shared_ptr(新资源(_a,_b));
}
私人:
Ressource(int_a,float_b):a{u a},b{u b}
};
模板
无效委托(std::shared_ptr(R::*工厂)(Args…,Args…){
std::shared_ptr ressource=工厂(args…);
}
无效测试(){
委托(资源:make,1,3.0f);
}
I get(msvc):错误C2064:[法语错误如下:]
谢谢。工厂方法
make
应该是资源的静态成员。然后,delegate\uu
将只获取指向函数的指针,而不是指向成员函数的指针,然后它将能够调用工厂函数。当前实现的问题是,为了从委托
中调用工厂
,您需要提供一个资源
对象来调用它。工厂方法make
应该是资源
的静态成员。然后,delegate\uu
将只获取指向函数的指针,而不是指向成员函数的指针,然后它将能够调用工厂函数。您当前实现的问题是,为了从委托
内部调用工厂
,您需要提供一个资源
对象来调用它。愚蠢的我,当然“make”是静态的,我在编写示例lol时失败了。谢谢-我可以修复我的代码。愚蠢的我,当然是“make”是静态的,我在写我的示例lol时失败了。谢谢你-我可以修复我的代码。