成员上的非静态链路错误C2352
Non static link on the member Error C2352
大家好。
我正在写一个插件与FireBreath。由于我的c++知识不够,出现了一个小问题,请看下面的代码。
我不明白,为什么函数FB::PluginWindowWin::getBrowserHWND()
,返回HWND
我不想为GetWindowRect(hWnd, &rect)
的功能做HWND
。
编译器从FB::PluginWindowWin::getBrowserHWND()
下划线FB
并告诉我"成员上的非静态链接必须指定而不是设置对象"(这是我的翻译,消息是关于俄语的,但我相信它仍然得到相同的意思)
得到这个错误:
Error C2352 FB::PluginWindowWin::getBrowserHWND:illegal call of non-static member function
代码:TestPlugin.cpp
#include "Win/PluginWindowWin.h"
#include "JSObject.h"
#include "variant_list.h"
#include "DOM/Document.h"
#include "global/config.h"
#include <Windows.h>
#include "TestPluginAPI.h"
///////My Functions////////
FB::variant PosTest()
{
RECT rect;
HWND hWnd;
hWnd = FB::PluginWindowWin::getBrowserHWND();
if(GetWindowRect(hWnd, &rect))
{
int width = rect.right - rect.left;
int height = rect.bottom - rect.top;
int left = rect.left;
return left;
}
}
TestPlugin.h
#include "Win/PluginWindowWin.h"
#include <string>
#include <sstream>
#include <boost/weak_ptr.hpp>
#include "JSAPIAuto.h"
#include "BrowserHost.h"
#include "TestPlugin.h"
#include <Windows.h>
/////Declarations/////
//Rect
BOOL WINAPI GetWindowRect(HWND hWnd, LPRECT lpRect);
//Pos Test
FB::variant PosTest();
该错误将表明getBrowserHWND()
不是static
方法,因此需要一个对象实例来调用它。
换句话说,您需要有一个FB::PluginWindowWin
类型的对象,然后您可以这样调用它:
hWnd = myPluginWindowWin.getBrowserHWND();
这段代码很适合我:
HWND myPluginAPI::getBrowserHwnd() {
FB::PluginWindow* pluginWindow = getPlugin()->GetWindow();
FB::PluginWindowWin* w = (FB::PluginWindowWin*)(pluginWindow);
HWND hwndBrowser = GetAncestor( w->getHWND(), GA_ROOTOWNER );
return hwndBrowser;
}
相关文章:
- 静态数据成员的问题-修复链接错误会导致编译器错误
- vscode g++链路故障:体系结构x86_64的未定义符号
- Visual Studio mkl_link_tool.exe链接错误
- C++ 实现模板单例类时出现链接错误
- 使用类模板的方法链接错误
- MySQL C++连接器链接错误
- VS 2015 链接错误 无法构建依赖于 libcurl 的项目
- 运行 C++ 单元测试时LNK2005链接错误
- 链表错误的中间
- 对 CMake 中'cudaRegisterLinkedBinary'链接错误的未定义引用?
- 链接错误,包括我创建的相同头文件 - C++
- GLFW DDS 加载函数的 OpenGL 链路错误
- VS 链路错误描述中的"@@YAHXZ"是什么意思?
- 提升单元测试链路错误
- C++ shared_ptr基于单调导致链路错误的原因
- MPG123 链路错误"_read"和"_lseek"
- 在VS2012中使用时出现log4cplus链路错误
- Parasoft c++测试链路单元测试错误
- Boost Asio GCC链路错误
- 成员上的非静态链路错误C2352