委托的工厂函数调用 - 找不到正确的语法
Delegated factory function call - cannot find the proper syntax
我想将工厂函数指针和可变长度参数传递给函数,但找不到正确的语法。像这样:
#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);
}
我得到 (msvc):错误 C2064:[法语错误:]
谢谢。
工厂方法 make
应该是 Resource
的静态成员。然后 delegate_
将只接受一个指向函数的指针,而不是一个指向成员函数的指针,然后它就可以调用工厂函数。当前实现的问题是,为了从 delegate_
中调用 factory
,您需要提供一个 Resource
对象来调用它。
我想将工厂函数指针和可变长度参数传递给函数,但找不到正确的语法。像这样:
#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);
}
我得到 (msvc):错误 C2064:[法语错误:]
谢谢。
工厂方法 make
应该是 Resource
的静态成员。然后 delegate_
将只接受一个指向函数的指针,而不是一个指向成员函数的指针,然后它就可以调用工厂函数。当前实现的问题是,为了从 delegate_
中调用 factory
,您需要提供一个 Resource
对象来调用它。