当前位置: 首页>>代码示例>>C++>>正文


C++ Method::invoke方法代码示例

本文整理汇总了C++中Method::invoke方法的典型用法代码示例。如果您正苦于以下问题:C++ Method::invoke方法的具体用法?C++ Method::invoke怎么用?C++ Method::invoke使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Method的用法示例。


在下文中一共展示了Method::invoke方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: methodTest

bool methodTest() {
	Class A(NULL, "A");
	Class B(&A, "B");
	ASSERT_NO_THROW(B.addMethod("nothing", doesNothing));
	ASSERT_EQUALS("nothing", B.getMethod("nothing").name());
	ASSERT_EQUALS("B", B.getMethod("nothing").getDeclaringClass());
	Method m = B.getMethod("nothing");
	Object* inst = A.newInstance();
	Object* b_inst = B.newInstance();
	ASSERT_THROW(MethodNotFound, m.invoke(inst));
	ASSERT_NO_THROW(m.invoke(b_inst));

	ASSERT_NO_THROW(A.addInstanceField("x", INT));
	// set accessible must be zero but invoke must succeed
	ASSERT_NO_THROW(A.addMethod("goblin", goblinIsHere));

	Object* obj = A.newInstance();
	Field f = A.getField("x");
	Class::setAccessible(true);
	ASSERT_EQUALS(f.getInt(obj), 0);

	Class::setAccessible(false);

	ASSERT_NO_THROW(obj->invokeMethod("goblin"));

	ASSERT_THROW(FieldNotAccessible, f.getInt(obj));
	Class::setAccessible(true);
	ASSERT_EQUALS(f.getInt(obj), 7);

/*	delete inst;
	delete b_inst;
	delete obj;*/
	return true;
}
开发者ID:sazulay3,项目名称:OOP-HW5,代码行数:34,代码来源:TestFace.cpp

示例2:

SmokeObject *SmokeObject::convertImplicitly(const SmokeType &type) const {
  const Class *cl = Class::fromSmokeId(type.smoke(), type.classId());
  Method *meth = cl->findImplicitConverter(this);
  SmokeObject *converted = NULL;
  if (meth) {
    Smoke::StackItem stack[2];
    stack[1].s_voidp = _ptr;
    meth->invoke(NULL, stack);
    if (meth->lastError() == Method::NoError)
      converted = SmokeObject::fromPtr(stack[0].s_voidp, type, true);
    delete meth;
  }
  return converted;
}
开发者ID:NickSpyrison,项目名称:qtbase,代码行数:14,代码来源:SmokeObject.cpp

示例3: invokeMethod

void Object::invokeMethod(std::string name) {
	Class* myClass = this->getClass();
	Method method = myClass->getMethod(name);
	method.invoke(this);
}
开发者ID:sazulay3,项目名称:OOP-HW5,代码行数:5,代码来源:Object.cpp


注:本文中的Method::invoke方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。