Instance#
-
template<typename F>
std::enable_if_t<!std::is_base_of<internal::XLangClass, F>::value, YR::internal::InstanceCreator<F>> YR::Instance(F constructor)# 为构建一个类的实例创建一个 InstanceCreator。
int main(void) { YR::Config conf; YR::Init(conf); auto ins = YR::Instance(SimpleCaculator::Constructor).Invoke(); auto r1 = ins.Function(&SimpleCaculator::Plus).Invoke(1, 1); int res = *(YR::Get(r1)); return 0; }
- 模板参数:
F - 不能是继承自 internal::XLangClass 的类型。
- 参数:
constructor - 一个用于构建类的实例并返回指向所构建对象的指针的函数。
- 返回:
InstanceCreator<F>:一个创建器对象,可用于创建实例并指定实例资源的额外选项。
-
template<typename F>
std::enable_if_t<!std::is_base_of<internal::XLangClass, F>::value, YR::internal::InstanceCreator<F>> YR::Instance(F constructor, const std::string &name)# 为构建一个类的实例创建一个 InstanceCreator。
int main(void) { YR::Config conf; YR::Init(conf); // 具名实例的名字是 name_1 auto counter = YR::Instance(Counter::FactoryCreate, "name_1").Invoke(1); auto c = counter.Function(&Counter::Add).Invoke(1); std::cout << "counter is " << *YR::Get(c) << std::endl; // 生成 name_1 具名实例的句柄, 可以重用 name_1 具名实例 counter = YR::Instance(Counter::FactoryCreate, "name_1").Invoke(1); c = counter.Function(&Counter::Add).Invoke(1); std::cout << "counter is " << *YR::Get(c) << std::endl; return 0; }
- 模板参数:
F - 不能是继承自 internal::XLangClass 的类型。
- 参数:
constructor - 一个用于构建类的实例并返回指向所构建对象的指针的函数。
name - 具名实例的实例名称,可以通过实例名称重用这个实例。
- 返回:
InstanceCreator<F>:一个创建器对象,可用于创建实例并指定实例资源的额外选项。
-
template<typename F>
std::enable_if_t<!std::is_base_of<internal::XLangClass, F>::value, YR::internal::InstanceCreator<F>> YR::Instance(F constructor, const std::string &name, const std::string &ns)# 为构建一个类的实例创建一个 InstanceCreator。
int main(void) { YR::Config conf; YR::Init(conf); // 具名实例的名字是 ns_1-name_1 auto counter = YR::Instance(Counter::FactoryCreate, "name_1", "ns_1").Invoke(1); auto c = counter.Function(&Counter::Add).Invoke(1); std::cout << "counter is " << *YR::Get(c) << std::endl; // 生成 ns_1-name_1 具名实例的句柄, 可以重用 ns_1-name_1 具名实例 counter = YR::Instance(Counter::FactoryCreate, "name_1", "ns_1").Invoke(1); c = counter.Function(&Counter::Add).Invoke(1); std::cout << "counter is " << *YR::Get(c) << std::endl; return 0; }
- 模板参数:
F - 不能是继承自 internal::XLangClass 的类型。
- 参数:
constructor - 一个用于构建类的实例并返回指向所构建对象的指针的函数。
name - 具名实例的实例名称,可以通过实例名称重用这个实例。
ns - 具名实例的命名空间。
- 返回:
InstanceCreator<F>:一个创建器对象,可用于创建实例并指定实例资源的额外选项。