首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建angelscript asSMethodPtr (不带angelscript宏)

创建angelscript asSMethodPtr (不带angelscript宏)
EN

Stack Overflow用户
提问于 2013-04-27 03:39:08
回答 1查看 193关注 0票数 0

我正在尝试使用Angelscript实现一个更动态的工作流,其中我不依赖于asMETHOD宏来将类/方法信息传递给Angelscript。

然而,到目前为止,我还不能让它工作。

下面是我定义的一些结构(用来设置类和方法数据):

代码语言:javascript
复制
struct Class {
std::string name;
std::string factorySignature;
void* pointer;
void* factoryPointer;
void* addRefMethodPointer;
void* releaseRefMethodPointer;
};


struct Method {
std::string name;
std::string signature;
void* pointer;
};

稍后,我尝试使用前面创建的类结构对象创建一个asSMethodPtr结构对象。这就是我要做的:

代码语言:javascript
复制
auto methodPtr = asSMethodPtr<sizeof(void (classObject.pointer)())>::Convert((void (classObject.pointer)())(classObject.addRefMethodPointer));

不幸的是,这会导致以下错误:

代码语言:javascript
复制
src/common/as_wrapper/AngelScript.cpp:98:66: error: void value not ignored as it ought to be
src/common/as_wrapper/AngelScript.cpp:98:68: error: template argument 1 is invalid
src/common/as_wrapper/AngelScript.cpp:98:107: error: void value not ignored as it ought to be
src/common/as_wrapper/AngelScript.cpp:98:142: error: unable to deduce ‘auto’ from ‘<expression error>’

有谁有什么想法吗?我担心这个asSMethodPtr结构正在突破我的C++能力的极限...

EN

回答 1

Stack Overflow用户

发布于 2013-04-27 10:55:19

指向成员函数的指针的格式为return_type (class_name::*)(parameter_list) const-volatile_qualifiers。您尝试传递给sizeof的参数由一个局部变量和一个成员变量组成,并且格式不正确。它应该如下所示

代码语言:javascript
复制
sizeof(void (Class::*)())

您传递给Convert的参数格式也不正确。您需要使用& address-of运算符通过address获取成员函数。另一个问题是,addRefMethodPointer是一个成员变量,而不是一个函数,因此转换将失败。

代码语言:javascript
复制
struct Class
{
    void SomeMemberFunction() {}
};

(void (Class::*)())(&Class::SomeMemberfunction)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16244004

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档