无法返回 POINT 以在其他函数中使用
Can't return the POINT to use in another function
得到这个代码:
(我正在使用FireBreath)
TestPluginAPI.h
FB::variant ClickSemulationMove(POINT);
FB::variant ClickSemulationClick(POINT);
TestPluginAPI.cpp
FB::variant TestPluginAPI::ClickSemulationClick(POINT pt)
{
ShowCursor(true);
MouseLeft();
MouseReturn(pt.x, pt.y);
ShowCursor(true);
return 0;
}
FB::variant TestPluginAPI::ClickSemulationMove(POINT &pt)
{
MouseMove(-325, 605);
POINT pt;
GetCursorPos(&pt);
return 0;
}
这个想法是,首先去ClickSemulationMove
,从GetCursorPos
保存pt
(我需要这个pt,因为我必须在移动鼠标之前得到它,然后返回那里),然后将其传递给ClickSemulationClick
在MouseReturn
中使用。
但是我得到了以下错误:C2511: FB::variant TestPluginAPI::ClickSemulationMove(POINT &) overloaded member function not found in "TestPluginAPI"
和error C2665: FB::variant_detail::conversion::convert_variant: none of the 5 overloads can convert all parameter
(这个错误得到了下面的一些代码和参数,如果需要,将发布)这听起来很简单,但我到底做错了什么?
这里有两个问题;第一个是你不能通过引用将参数传递给NPAPI方法,因此你也不能传入firebreath方法。第二,你不能使用任意的类型。
你有几个选择:
- 对于输入,我建议您只需将int x, int y传入函数。
- 对于输出,你可以传递一个字符串,你解码或FB::VariantList与你需要的值将成为一个javascript数组。你也可以返回一个FB::VariantMap,它将成为一个javascript对象,允许你传递命名的x和y值。
- 如果你真的想通过引用来传递东西,你可以传递一个FB::JSObjectPtr,它需要是一个javascript对象或数组({}或[]),你已经保存在javascript中。然后,您可以通过调用->SetProperty("x", xval)等或->SetProperty(0, xval)来更改它,如果您使用数组。你也可以调用->Invoke("push", FB::variant_list_of(xval))来将数组压入。
相关文章:
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 有没有什么方法可以使用一个函数中定义的常量变量,也可以由c++中同一程序中的其他函数使用
- 为什么我不能在 C++ 中的特定函数重载中调用同一函数的任何其他重载?
- 保留对其他类的成员函数的引用
- 为什么将值返回函数传递给重载=运算符对运算符函数有效,而对其他运算符无效
- 如何在其他文件中使用函数
- C++变量名(可以将 main 声明为变量,但对于其他函数名称则不然)
- 如何封装一个函数,以便它只能由同一类中的一个其他函数调用?
- 为什么 memcpy() 和其他类似的函数使用汇编?
- 为什么 c++ 中的 main() 函数不采用除 int 和 void 之外的任何其他返回类型
- 泛型枚举和其他类型的重载模板函数
- error dllimport 函数的定义不允许在一个特定的联合中,而其他类、结构和联合将按预期导出
- 将基类的成员函数重载到其他派生类C++
- 如何在其他类中使用参数化构造函数制作类的对象?
- 为什么 ADL 的运算符函数行为与其他函数不同?
- 没有头文件如何使用c ++调用其他模块中的函数?
- 在C++单元测试上下文中,抽象基类是否应将其他抽象基类作为函数参数
- 如何制作 cmakelists.txt编译使用在其他地方声明和实现的函数和类的 CPP
- 成员函数不能为集合迭代器和const_iterator的输入重载(但可以为其他 STL 迭代器重载)
- 通过向构造函数其他对象引用页面来创建对象